心血来潮随便写一个计算器的程序
实现过程中用到了mvvm 的思想,只是简单的实现了一个变量的通知以及绑定command 个人对通知绑定和command也不是很会。
主要计算器的思路就是使用一个list<double>存放一下每次计算的变量。
- 部分按钮并没有实现功能,不影响计算,可以进行加减乘除,以及连续计算。
<Window x:Class="计算器.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:计算器"
mc:Ignorable="d"
FontSize="20"
Title="wpf计算器" Height="650" Width="450">
<Window.Resources>
<Style TargetType="Button">
<Setter Property="Width" Value="70"/>
<Setter Property="Height" Value="25"/>
<Setter Property="Foreground" Value="White"/>
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Background" Value="#43a9c7"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border x:Name="border" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" SnapsToDevicePixels="True">
<TextBlock Text="{TemplateBinding Content}" Foreground="{TemplateBinding Foreground}" VerticalAlignment="Center" HorizontalAlignment="Center"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="border" Property="Background" Value="#2f96b4"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter TargetName="border" Property="Background" Value="#2a89a4"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="1*" ></RowDefinition>
<RowDefinition Height="9*"></RowDefinition>
</Grid.RowDefinitions>
<Grid Grid.Row="0">
<Border BorderBrush="Black" BorderThickness="1,1,1,1" >
<TextBlock Text="{Binding TextNum}" VerticalAlignment="Center" FontSize="25" Margin="5,0,0,0"></TextBlock>
</Border>
</Grid>
<UniformGrid Grid.Row="1" Columns="4">
<Button Content="%" Width="Auto" Height="auto" Margin="5" Command="{Binding command1,RelativeSource={RelativeSource AncestorType=Window}}" CommandParameter="{Binding RelativeSource={RelativeSource self}}" />
<Button Content="+" Width="Auto" Height="auto" Margin="5" Command="{Binding command1,RelativeSource={RelativeSource AncestorType=Window}}" CommandParameter="{Binding RelativeSource={RelativeSource self}}" />
<Button Content="CE" Width="Auto" Height="auto" Margin="5" Command="{Binding command3,RelativeSource={RelativeSource AncestorType=Window}}" CommandParameter="{Binding RelativeSource={RelativeSource self}}"/>
<Button Content="删除" Width="Auto" Height="auto" Margin="5"/>
<Button Content="1" Width="Auto" Height="auto" Margin="5" Click="Number"/>
<Button Content="2" Width="Auto" Height="auto" Margin="5" Click="Number" />
<Button Content="3" Width="Auto" Height="auto" Margin="5" Click="Number" />
<Button Content="/" Width="Auto" Height="auto" Margin="5" Command="{Binding command1,RelativeSource={RelativeSource AncestorType=Window}}" CommandParameter="{Binding RelativeSource={RelativeSource self}}" />
<Button Content="4" Width="Auto" Height="auto" Margin="5" Click="Number"/>
<Button Content="5" Width="Auto" Height="auto" Margin="5" Click="Number" />
<Button Content="6" Width="Auto" Height="auto" Margin="5" Click="Number" />
<Button Content="*" Width="Auto" Height="auto" Margin="5" Command="{Binding command1,RelativeSource={RelativeSource AncestorType=Window}}" CommandParameter="{Binding RelativeSource={RelativeSource self}}" />
<Button Content="7" Width="Auto" Height="auto" Margin="5" Click="Number" />
<Button Content="8" Width="Auto" Height="auto" Margin="5" Click="Number" />
<Button Content="9" Width="Auto" Height="auto" Margin="5" Click="Number" />
<Button Content="-" Width="Auto" Height="auto" Margin="5" Command="{Binding command1,RelativeSource={RelativeSource AncestorType=Window}}" CommandParameter="{Binding RelativeSource={RelativeSource self}}" />
<Button Content="0" Width="Auto" Height="auto" Margin="5" Click="Number" />
<Button Content="." Width="Auto" Height="auto" Margin="5" Click="Number" />
<Button Content="" Style="{DynamicResource FontAwesome}" FontSize="30" Width="Auto" Height="auto" Margin="5"/>
<Button Content="=" Width="Auto" Height="auto" Margin="5" Command="{Binding command2,RelativeSource={RelativeSource AncestorType=Window}}" CommandParameter="{Binding RelativeSource={RelativeSource self}}" />
</UniformGrid>
</Grid>
</Window>
运行截图