WPF技术的最显著的特点是实现了UI和逻辑业务的分离,并用数据绑定来关联两者。本文通过一个简单的实例来总结一下WPF中数据绑定的方法,本例还用到了数据库操作和泛型集合的使用方法。
1. UI和功能
左上方Border区域内有三个Label控件、三个TextBox控件和三个Button控件,TextBox控件用于接收用户输入和显示选择的内容,Button控件分别实现数据库的添加、删除、修改操作。右上Border区域内有两个Label控件、一个Combo控件、一个TextBox控件和一个Button控件,左下为DataGrid控件,右下为ListView控件。程序启动时DataGrid控件显示数据库tb_User表中所有的元素,ListView控件显示按条件查询的结果,鼠标可以从DataGrid控件、ListView控件中选择条目,显示在左上的TextBox控件中,从而进行修改和删除操作。
代码如下,其中数据绑定部分关键代码加粗标出,后面再解释。
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WPF" x:Class="WPF.MainWindow"
Title="用户设置" Height="720"Width="1024"Background="{DynamicResource{x:StaticSystemColors.ControlBrushKey}}" ResizeMode="NoResize"FontSize="14">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="265*"/>
<ColumnDefinition Width="243*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="330*"/>
<RowDefinition Height="359*"/>
</Grid.RowDefinitions>
<TextBox x:Name="tbx_User"HorizontalAlignment="Left" Height="35"Margin="160,80,0,0"TextWrapping="Wrap"VerticalAlignment="Top" Width="150"FontSize="16" BorderBrush="{DynamicResource {x:Static SystemColors.ControlDarkDarkBrushKey}}"/>
<TextBox x:Name="tbx_KeyWord"HorizontalAlignment="Left" Height="35"Margin="160,160,0,0"TextWrapping="Wrap"VerticalAlignment="Top" Width="150"FontSize="16" BorderBrush="{DynamicResource {x:Static SystemColors.ControlDarkDarkBrushKey}}"/>
<TextBox x:Name="tbx_Auth"HorizontalAlignment="Left" Height="35"Margin="160,240,0,0"TextWrapping="Wrap" VerticalAlignment="Top"Width="150" FontSize="16"BorderBrush="{DynamicResource{x:StaticSystemColors.ControlDarkDarkBrushKey}}"/>
<Button x:Name="btn_Add" Content="添加用户"HorizontalAlignment="Left" Height="40"Margin="360,80,0,0"VerticalAlignment="Top" Width="120"FontSize="16" Click="btn_Add_Click"/>
<Button x:Name="btn_Remove"Content="删除用户"HorizontalAlignment="Left" Height="40"Margin="360,160,0,0"VerticalAlignment="Top" Width="120"FontSize="16" Click="btn_Remove_Click"/>
<Button x:Name="btn_Upate"Content="编辑用户"HorizontalAlignment="Left" Height="40"Margin="360,240,0,0"VerticalAlignment="Top" Width="120"FontSize="16" Click="btn_Upate_Click"/>
<Label Content="用户名"HorizontalAlignment="Left" Height="40"Margin="60,75,0,0"VerticalAlignment="Top" Width="80"FontSize="16"/>
<Label Content="密码"HorizontalAlignment="Left" Height="40"Margin="60,155,0,0"VerticalAlignment="Top" Width="80"FontSize="16"/>
<Label Content="权限"HorizontalAlignment="Left" Height="40"Margin="60,235,0,0"VerticalAlignment="Top" Width="80"FontSize="16"/>
<Border BorderBrush="Black"BorderThickness="1" HorizontalAlignment="Left"Height="305" Margin="20,20,0,0"VerticalAlignment="Top" Width="490"/>
<ComboBox x:Name="cbx_condition"Grid.Column="1" HorizontalAlignment="Left"Height="35" Margin="200,80,0,0"VerticalAlignment="Top" Width="165"FontSize="16">
<ComboBoxItem Content="按用户名"/>
<ComboBoxItem Content="按用户权限"/>
</ComboBox>
<Label Content=