Welcome to DetlefGrohs.com Sign in | Join | Help

SilverLight Calculator Experiment

I am writing a scientific calculator in SilverLight as an exercise to learn SilverLight and as something to do while watching TV in the hotel at night. Here is the XAML that I have so far:

image

   1: <UserControl x:Class="CALC_SL.Page"
   2:     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
   3:     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
   4:     Width="640" Height="480">
   5:     <UserControl.Resources>
   6:         <Style TargetType="Button" x:Key="BlueButtonStyle">
   7:             <Setter Property="Foreground" Value="Blue" />
   8:         </Style>
   9:         <Style TargetType="Button" x:Key="PurpleButtonStyle">
  10:             <Setter Property="Foreground" Value="Purple" />
  11:         </Style>
  12:         <Style TargetType="Button" x:Key="RedButtonStyle">
  13:             <Setter Property="Foreground" Value="Red" />
  14:         </Style>
  15:     </UserControl.Resources>
  16:     <Grid x:Name="LayoutRoot" Background="White">
  17:         <Grid.RowDefinitions>
  18:             <RowDefinition Height="4*"/>
  19:             <RowDefinition />
  20:             <RowDefinition />
  21:             <RowDefinition />
  22:             <RowDefinition />
  23:             <RowDefinition />
  24:             <RowDefinition />
  25:             <RowDefinition />
  26:         </Grid.RowDefinitions>
  27:         <Grid.ColumnDefinitions>
  28:             <ColumnDefinition />
  29:             <ColumnDefinition />
  30:             <ColumnDefinition />
  31:             <ColumnDefinition />
  32:             <ColumnDefinition />
  33:             <ColumnDefinition />
  34:             <ColumnDefinition />
  35:             <ColumnDefinition />
  36:             <ColumnDefinition />
  37:             <ColumnDefinition />
  38:             <ColumnDefinition />
  39:         </Grid.ColumnDefinitions>
  40:         
  41:         <Grid Grid.Row="0" Grid.Column="0" Margin="4" Grid.ColumnSpan="11" >
  42:             <Grid.RowDefinitions>               
  43:                 <RowDefinition />
  44:                 <RowDefinition Height="32"/>
  45:             </Grid.RowDefinitions>
  46:             <Grid.ColumnDefinitions>
  47:                 <ColumnDefinition />               
  48:             </Grid.ColumnDefinitions>
  49:             
  50:             <TextBox Grid.Row="0" Grid.Column="0" Margin="4" x:Name="HistoryTextBox" IsReadOnly="True"
  51:                      TextAlignment="Right" Text="History" VerticalContentAlignment="Bottom"
  52:                       VerticalScrollBarVisibility="Visible" FontFamily="Courier New"/>
  53:             <TextBox Grid.Row="1" Grid.Column="0" Margin="4,4,22,4" x:Name="EntryTextBox" Text="1000.00"
  54:                      TextAlignment="Right" FontFamily="Courier New"/>
  55:         </Grid>  
  56:         
  57:         <Border Grid.Row="1" Grid.Column="0" Margin="4" Grid.ColumnSpan="5" 
  58:                 BorderThickness="1" BorderBrush="Black">
  59:             <Grid VerticalAlignment="Center">
  60:                 <Grid.ColumnDefinitions>
  61:                     <ColumnDefinition />
  62:                     <ColumnDefinition />
  63:                     <ColumnDefinition />
  64:                     <ColumnDefinition />
  65:                 </Grid.ColumnDefinitions>
  66:                 
  67:                 <RadioButton Grid.Column="0" Content="Hex" Margin="4" x:Name="HexRadioButton" Checked="RadioButton_Checked" HorizontalAlignment="Center" VerticalAlignment="Center"/>
  68:                 <RadioButton Grid.Column="1" Content="Dec" Margin="4" IsChecked="True" x:Name="DecRadioButton" Checked="RadioButton_Checked" HorizontalAlignment="Center" VerticalAlignment="Center"/>
  69:                 <RadioButton Grid.Column="2" Content="Oct" Margin="4" x:Name="OctRadioButton" Checked="RadioButton_Checked" HorizontalAlignment="Center" VerticalAlignment="Center"/>
  70:                 <RadioButton Grid.Column="3" Content="Bin" Margin="4" x:Name="BinRadioButton" Checked="RadioButton_Checked" HorizontalAlignment="Center" VerticalAlignment="Center"/>
  71:             </Grid>
  72:         </Border>
  73:  
  74:         <Border Grid.Row="1" Grid.Column="5" Margin="4" Grid.ColumnSpan="6" 
  75:                 BorderThickness="1" BorderBrush="Black">
  76:             <Grid VerticalAlignment="Center" HorizontalAlignment="Stretch">
  77:                 <Grid.ColumnDefinitions>
  78:                     <ColumnDefinition />
  79:                     <ColumnDefinition />
  80:                     <ColumnDefinition />                    
  81:                 </Grid.ColumnDefinitions>
  82:  
  83:                 <RadioButton Grid.Column="0" Content="Degrees" Margin="4" IsChecked="True" x:Name="DegreesRadioButton" VerticalAlignment="Center" HorizontalAlignment="Center"/>
  84:                 <RadioButton Grid.Column="1" Content="Radians" Margin="4" x:Name="RadiansRadioButton" VerticalAlignment="Center" HorizontalAlignment="Center"/>
  85:                 <RadioButton Grid.Column="2" Content="Grads" Margin="4" x:Name="GradsRadioButton" VerticalAlignment="Center" HorizontalAlignment="Center"/>
  86:             </Grid>
  87:         </Border>
  88:  
  89:         <Border Grid.Row="2" Grid.Column="0" Margin="4" Grid.ColumnSpan="3" 
  90:                 BorderThickness="1" BorderBrush="Black">
  91:             <Grid VerticalAlignment="Center">
  92:                 <Grid.ColumnDefinitions>
  93:                     <ColumnDefinition />
  94:                     <ColumnDefinition />                   
  95:                 </Grid.ColumnDefinitions>
  96:  
  97:                 <CheckBox Grid.Column="0" Content="Inv" Margin="4" x:Name="InvCheckBox" HorizontalAlignment="Center" VerticalAlignment="Center"/>
  98:                 <CheckBox Grid.Column="1" Content="Hyp" Margin="4" x:Name="HypCheckBox" HorizontalAlignment="Center" VerticalAlignment="Center"/>
  99:             </Grid>
 100:         </Border>
 101:         
 102:         <TextBlock Grid.Row="2" Grid.Column="3" Text="X" 
 103:                    VerticalAlignment="Center"
 104:                    HorizontalAlignment="Center" x:Name="StatusTextBlock"/>
 105:  
 106:         <TextBlock Grid.Row="2" Grid.Column="4" Text="M" 
 107:                    VerticalAlignment="Center"
 108:                    HorizontalAlignment="Center" x:Name="MemoryIndicatorTextBlock"/>
 109:         
 110:         <Button Grid.Row="2" Grid.Column="5" Grid.ColumnSpan="2" Margin="4" Content="Backspace" Style="{StaticResource RedButtonStyle}" x:Name="BackspaceButton" Click="Button_Click"/>
 111:         <Button Grid.Row="2" Grid.Column="7" Grid.ColumnSpan="2" Margin="4" Content="ClrE" Style="{StaticResource RedButtonStyle}" x:Name="ClrEButton" Click="Button_Click"/>
 112:         <Button Grid.Row="2" Grid.Column="9" Grid.ColumnSpan="2" Margin="4" Content="Clr" Style="{StaticResource RedButtonStyle}" x:Name="ClrButton" Click="Button_Click"/>
 113:  
 114:         <Button Grid.Row="3" Grid.Column="0" Margin="4" Content="Sta" 
 115:                 
 116:                 Style="{StaticResource BlueButtonStyle}" Click="Button_Click" x:Name="StaButton"/>
 117:         <Button Grid.Row="3" Grid.Column="1" Margin="4" Content="F-E" 
 118:                 Style="{StaticResource PurpleButtonStyle}" Click="Button_Click" x:Name="FEButton"/>
 119:         <Button Grid.Row="3" Grid.Column="2" Margin="4" Content="(" 
 120:                 Style="{StaticResource PurpleButtonStyle}" Click="Button_Click" x:Name="OpenParenButton"/>
 121:         <Button Grid.Row="3" Grid.Column="3" Margin="4" Content=")" 
 122:                 Style="{StaticResource PurpleButtonStyle}" Click="Button_Click" x:Name="CloseParenButton"/>
 123:         <Button Grid.Row="3" Grid.Column="4" Margin="4" Content="MC" 
 124:                 Style="{StaticResource RedButtonStyle}" Click="Button_Click" x:Name="MCButton"/>
 125:         <Button Grid.Row="3" Grid.Column="5" Margin="4" Content="7" Tag="Hex;Dec;Oct;Bin"
 126:                 Style="{StaticResource BlueButtonStyle}" Click="Button_Click" x:Name="SevenButton"/>
 127:         <Button Grid.Row="3" Grid.Column="6" Margin="4" Content="8" Tag="Hex;Dec;Oct;Bin"
 128:                 Style="{StaticResource BlueButtonStyle}" Click="Button_Click" x:Name="EightButton"/>
 129:         <Button Grid.Row="3" Grid.Column="7" Margin="4" Content="9" Tag="Hex;Dec;Oct;Bin"
 130:                 Style="{StaticResource BlueButtonStyle}" Click="Button_Click" x:Name="NineButton"/>
 131:         <Button Grid.Row="3" Grid.Column="8" Margin="4" Content="/" 
 132:                 Style="{StaticResource RedButtonStyle}" Click="Button_Click" x:Name="DivideButton"/>
 133:         <Button Grid.Row="3" Grid.Column="9" Margin="4" Content="Mod" 
 134:                 Style="{StaticResource RedButtonStyle}" Click="Button_Click" x:Name="ModButton"/>
 135:         <Button Grid.Row="3" Grid.Column="10" Margin="4" Content="And" 
 136:                 Style="{StaticResource RedButtonStyle}" Click="Button_Click" x:Name="AndButton"/>
 137:         
 138:         <Button Grid.Row="4" Grid.Column="0" Margin="4" Content="Ave" 
 139:                 Click="Button_Click" x:Name="AveButton"/>
 140:         <Button Grid.Row="4" Grid.Column="1" Margin="4" Content="dms" 
 141:                 Style="{StaticResource PurpleButtonStyle}" Click="Button_Click" x:Name="DmsButton"/>
 142:         <Button Grid.Row="4" Grid.Column="2" Margin="4" Content="Exp" 
 143:                 Style="{StaticResource PurpleButtonStyle}" Click="Button_Click" x:Name="ExpButton"/>
 144:         <Button Grid.Row="4" Grid.Column="3" Margin="4" Content="ln" 
 145:                 Style="{StaticResource PurpleButtonStyle}" Click="Button_Click" x:Name="LnButton"/>
 146:         <Button Grid.Row="4" Grid.Column="4" Margin="4" Content="MR" 
 147:                 Style="{StaticResource RedButtonStyle}" Click="Button_Click" x:Name="MRButton"/>
 148:         <Button Grid.Row="4" Grid.Column="5" Margin="4" Content="4" Tag="Hex;Dec;Oct;Bin"
 149:                 Style="{StaticResource BlueButtonStyle}" x:Name="FourButton" Click="Button_Click"/>
 150:         <Button Grid.Row="4" Grid.Column="6" Margin="4" Content="5" Tag="Hex;Dec;Oct;Bin"
 151:                 Style="{StaticResource BlueButtonStyle}" x:Name="FiveButton" Click="Button_Click"/>
 152:         <Button Grid.Row="4" Grid.Column="7" Margin="4" Content="6" Tag="Hex;Dec;Oct;Bin"
 153:                 Style="{StaticResource BlueButtonStyle}" x:Name="SixButton" Click="Button_Click"/>
 154:         <Button Grid.Row="4" Grid.Column="8" Margin="4" Content="*" 
 155:                 Style="{StaticResource RedButtonStyle}" Click="Button_Click" x:Name="TimesButton" />
 156:         <Button Grid.Row="4" Grid.Column="9" Margin="4" Content="Or" 
 157:                 Style="{StaticResource RedButtonStyle}" Click="Button_Click" x:Name="OrButton"/>
 158:         <Button Grid.Row="4" Grid.Column="10" Margin="4" Content="Xor" 
 159:                 Style="{StaticResource RedButtonStyle}" Click="Button_Click" x:Name="XorButton"/>
 160:         
 161:         <Button Grid.Row="5" Grid.Column="0" Margin="4" Content="Sum" 
 162:                 x:Name="SumButton" />
 163:         <Button Grid.Row="5" Grid.Column="1" Margin="4" Content="sin" 
 164:                 Style="{StaticResource PurpleButtonStyle}" Click="Button_Click" x:Name="SinButton"/>
 165:         <Button Grid.Row="5" Grid.Column="2" Margin="4" Content="x^y" Style="{StaticResource PurpleButtonStyle}" Click="Button_Click" x:Name="RootButton"/>
 166:         <Button Grid.Row="5" Grid.Column="3" Margin="4" Content="log" Style="{StaticResource PurpleButtonStyle}" Click="Button_Click" x:Name="LogButton"/>
 167:         <Button Grid.Row="5" Grid.Column="4" Margin="4" Content="MS" Style="{StaticResource RedButtonStyle}" Click="Button_Click" x:Name="MSButton"/>
 168:         <Button Grid.Row="5" Grid.Column="5" Margin="4" Content="1" Style="{StaticResource BlueButtonStyle}" x:Name="OneButton" Click="Button_Click"/>
 169:         <Button Grid.Row="5" Grid.Column="6" Margin="4" Content="2" Style="{StaticResource BlueButtonStyle}" x:Name="TwoButton" Click="Button_Click"/>
 170:         <Button Grid.Row="5" Grid.Column="7" Margin="4" Content="3" Style="{StaticResource BlueButtonStyle}" x:Name="ThreeButton" Click="Button_Click"/>
 171:         <Button Grid.Row="5" Grid.Column="8" Margin="4" Content="-" Style="{StaticResource RedButtonStyle}" Click="Button_Click" x:Name="MinusButton"/>
 172:         <Button Grid.Row="5" Grid.Column="9" Margin="4" Content="Lsh" Style="{StaticResource RedButtonStyle}" Click="Button_Click" x:Name="LshButton"/>
 173:         <Button Grid.Row="5" Grid.Column="10" Margin="4" Content="Not" Style="{StaticResource RedButtonStyle}" Click="Button_Click" x:Name="NotButton"/>
 174:  
 175:         <Button Grid.Row="6" Grid.Column="0" Margin="4" Content="s" x:Name="SButton" />
 176:         <Button Grid.Row="6" Grid.Column="1" Margin="4" Content="cos" Style="{StaticResource PurpleButtonStyle}" Click="Button_Click" x:Name="CosButton"/>
 177:         <Button Grid.Row="6" Grid.Column="2" Margin="4" Content="x^3" Style="{StaticResource PurpleButtonStyle}" Click="Button_Click" x:Name="CubedButton"/>
 178:         <Button Grid.Row="6" Grid.Column="3" Margin="4" Content="n!" Style="{StaticResource PurpleButtonStyle}" Click="Button_Click" x:Name="FactorialButton"/>
 179:         <Button Grid.Row="6" Grid.Column="4" Margin="4" Content="M+" Style="{StaticResource RedButtonStyle}" Click="Button_Click" x:Name="MPlusButton"/>
 180:         <Button Grid.Row="6" Grid.Column="5" Margin="4" Content="0" Style="{StaticResource BlueButtonStyle}" Click="Button_Click" x:Name="ZeroButton"/>
 181:         <Button Grid.Row="6" Grid.Column="6" Margin="4" Content="+/-" Style="{StaticResource BlueButtonStyle}" Click="Button_Click" x:Name="InverseButton"/>
 182:         <Button Grid.Row="6" Grid.Column="7" Margin="4" Content="." Style="{StaticResource BlueButtonStyle}" Click="Button_Click" x:Name="PeriodButton"/>
 183:         <Button Grid.Row="6" Grid.Column="8" Margin="4" Content="+" Style="{StaticResource RedButtonStyle}" Click="Button_Click" x:Name="PlusButton"/>
 184:         <Button Grid.Row="6" Grid.Column="9" Margin="4" Content="=" Style="{StaticResource RedButtonStyle}" Click="Button_Click" x:Name="EqualButton"/>
 185:         <Button Grid.Row="6" Grid.Column="10" Margin="4" Content="Int" Style="{StaticResource RedButtonStyle}" Click="Button_Click" x:Name="IntButton"/>
 186:  
 187:         <Button Grid.Row="7" Grid.Column="0" Margin="4" Content="Dat" Click="Button_Click" x:Name="DatButton"/>
 188:         <Button Grid.Row="7" Grid.Column="1" Margin="4" Content="tan" Style="{StaticResource PurpleButtonStyle}" Click="Button_Click" x:Name="TanButton"/>
 189:         <Button Grid.Row="7" Grid.Column="2" Margin="4" Content="x^2" Style="{StaticResource PurpleButtonStyle}" Click="Button_Click" x:Name="SquareButton"/>
 190:         <Button Grid.Row="7" Grid.Column="3" Margin="4" Content="1/x" Style="{StaticResource PurpleButtonStyle}" Click="Button_Click" x:Name="InvertButton"/>
 191:         <Button Grid.Row="7" Grid.Column="4" Margin="4" Content="pi" Style="{StaticResource BlueButtonStyle}" Click="Button_Click" x:Name="PiButton"/>
 192:         <Button Grid.Row="7" Grid.Column="5" Margin="4" Content="A" Click="Button_Click" x:Name="HexAButton"/>
 193:         <Button Grid.Row="7" Grid.Column="6" Margin="4" Content="B" Click="Button_Click" x:Name="HexBButton"/>
 194:         <Button Grid.Row="7" Grid.Column="7" Margin="4" Content="C" Click="Button_Click" x:Name="HexCButton"/>
 195:         <Button Grid.Row="7" Grid.Column="8" Margin="4" Content="D" Click="Button_Click" x:Name="HexDButton"/>
 196:         <Button Grid.Row="7" Grid.Column="9" Margin="4" Content="E" Click="Button_Click" x:Name="HexEButton"/>
 197:         <Button Grid.Row="7" Grid.Column="10" Margin="4" Content="F" Click="Button_Click" x:Name="HexFButton"/>
 198:  
 199:  
 200:     </Grid>
 201: </UserControl>
Published Thursday, April 30, 2009 12:13 PM by detlef
Filed Under:

Comments

No Comments
Anonymous comments are disabled