using System.Collections.Generic; using System.Windows.Controls; using Calculator.Desktop.UI.Controls; using Calculator.Domain; using Calculator.Infrastructure.Extensions; using Calculator.Presentation.Commands; using Calculator.Presentation.Controls; using Calculator.Presentation.Views; namespace Calculator.Desktop.UI { public partial class MainShell : ICalculatorView { public MainShell() { InitializeComponent( ); buttonsOnScreen = new List< IClickableControl > { From( uxButtonZero ), From( uxButtonOne ), From( uxButtonTwo ), From( uxButtonThree ), From( uxButtonFour ), From( uxButtonFive ), From( uxButtonSix ), From( uxButtonSeven ), From( uxButtonEight ), From( uxButtonNine ) }; } public void Display( INumber resultToDisplay ) { uxResultToDisplay.Content = resultToDisplay; } public void BindToCommands( IEnumerable< IAppendDigitCommand > commandsToBindTo ) { foreach ( var command in commandsToBindTo ) { buttonsOnScreen.WhereItemMatches( command ).BindClickTo( command ); } } private IClickableControl From( Button button ) { return new ButtonControl( button ); } private readonly IEnumerable< IClickableControl > buttonsOnScreen; } }