在本文中,将学习如何创建一个使用WPF和SQL ServerCompact 3.5 SP1进行数据绑定的浏览器应用。将从创建项目开始,逐步介绍如何设计GUI,实现数据绑定,并添加增删改查功能。
在开始之前,请确保机器上已经安装了以下软件:
打开Visual Studio 2010,选择“新建项目”来创建一个新的WPF浏览器应用。在项目类型中选择“Windows”,然后选择“WPF浏览器应用”,为应用命名后点击“确定”。
创建新应用后,需要设计图形用户界面(GUI)。以下是使用的控件列表:
以下是XAML代码中DataGrid的示例:
<DataGrid AutoGenerateColumns="False" Height="181" HorizontalAlignment="Left" Margin="12,188,0,0" Name="Details_Grid" VerticalAlignment="Top" Width="518" ItemsSource="{Binding Path=MyDataBinding}" CanUserResizeRows="False" Loaded="Details_Grid_Loaded" SelectedCellsChanged="Details_Grid_SelectedCellsChanged">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=fName}" Header="First Name" Width="120" IsReadOnly="True" />
<DataGridTextColumn Binding="{Binding Path=lName}" Header="Last Name" Width="120" IsReadOnly="True" />
<DataGridTextColumn Binding="{Binding Path=DOB}" Header="Date Of Birth" Width="150" IsReadOnly="True" />
<DataGridTextColumn Binding="{Binding Path=City}" Header="City" Width="120" IsReadOnly="True" />
</DataGrid.Columns>
</DataGrid>
在上述代码中,通过设置“ItemsSource”属性为“MyDataBinding”来绑定数据到DataGrid。
为了实现数据绑定,使用了ADO.NET。以下是绑定DataGrid的XAML代码:
<DataGrid AutoGenerateColumns="False" Height="181" HorizontalAlignment="Left" Margin="12,188,0,0" Name="Details_Grid" VerticalAlignment="Top" Width="518" ItemsSource="{Binding Path=MyDataBinding}" CanUserResizeRows="False" Loaded="Details_Grid_Loaded" SelectedCellsChanged="Details_Grid_SelectedCellsChanged">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=fName}" Header="First Name" Width="120" IsReadOnly="True" />
<DataGridTextColumn Binding="{Binding Path=lName}" Header="Last Name" Width="120" IsReadOnly="True" />
<DataGridTextColumn Binding="{Binding Path=DOB}" Header="Date Of Birth" Width="150" IsReadOnly="True" />
<DataGridTextColumn Binding="{Binding Path=City}" Header="City" Width="120" IsReadOnly="True" />
</DataGrid.Columns>
</DataGrid>
通过设置“ItemsSource”属性为“MyDataBinding”来绑定数据到DataGrid。
接下来,将编写代码以实现添加数据到数据库的功能。以下是“Add”按钮的点击事件处理代码:
private void Add_btn_Click(object sender, RoutedEventArgs e)
{
try
{
SqlCeConnection Conn = new SqlCeConnection(Connection_String);
Conn.Open();
string Date = DOB_txt.DisplayDate.ToShortDateString();
string Insert_Cmd = @"
insert into Details(fName,lName,DOB,City) Values
('" + FirstName_txt.Text + "','" + LastName_txt.Text + "','" + Date.ToString() + "','" + City_txt.Text + "')";
SqlCeCommand cmd = new SqlCeCommand(Insert_Cmd, Conn);
cmd.ExecuteNonQuery();
MessageBox.Show("One Record Inserted");
FirstName_txt.Text = string.Empty;
LastName_txt.Text = string.Empty;
DOB_txt.Text = string.Empty;
City_txt.Text = string.Empty;
this.BindGrid();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
在上述代码中,首先打开数据库连接,然后构建插入命令,并执行该命令以添加数据。
为了连接到SQL ServerCompact数据库,需要在App.Config文件中配置数据库连接字符串。以下是App.Config文件的示例:
<configuration>
<connectionStrings>
<add name="ConnectionString1" connectionString="Data Source=\DatabindusingWPF.sdf; Password=test@123; Persist Security Info=False;" />
</connectionStrings>
</configuration>
在代码中,使用ConfigurationManager来获取连接字符串的值:
string Connection_String = ConfigurationManager.ConnectionStrings["ConnectionString1"].ConnectionString;
为了将数据绑定到DataGrid,创建了一个名为BindGrid的方法,并在其他事件中调用该方法以刷新DataGrid数据。以下是BindGrid方法的代码:
public void BindGrid()
{
try
{
SqlCeConnection Conn = new SqlCeConnection(Connection_String);
Conn.Open();
SqlCeDataAdapter Adapter = new SqlCeDataAdapter("Select * from Details", Conn);
DataSet Bind = new DataSet();
Adapter.Fill(Bind, "MyDataBinding");
Details_Grid.DataContext = Bind;
Conn.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
在上述代码中,打开数据库连接,使用SqlCeDataAdapter从数据库中检索数据,并将数据绑定到DataSet,最后将DataSet绑定到DataGrid。
设计和编码完成后,需要测试项目。按下“F5”运行项目。如果在运行过程中遇到错误,请尝试删除并重新创建app.manifest文件。
如果希望更改浏览器标题,可以在XAML文件的Page标签中添加WindowTitle属性。以下是示例:
<Page x:Class="Databinding_WPF_Browser.MainPage" WindowTitle="DataBinding in WPF using SQL Server Compact" ...>