简单的CRUD与WPF和数据绑定一起使用

时间:2010-02-11 19:45:12

标签: .net wpf windows data-binding

我是WPF for Windows应用程序开发的新手,只是想把它放在那里。我正在使用Visual Studio 2010和.NET Framework 4.0。

我正在研究一种相当简单的管理工具。为简单起见,我想说我正在使用Employee数据。我创建了一个名为UserDetail的UserControl,其中包含与Employee类相关的所有字段。

在UserDetail上绑定输入控件的最简单方法是什么?创建新实例时可能会出现空白,如果编辑现有实例,则可能为现有值。

我在构造函数中尝试了以下内容:

DataContext = _employee;

我在XAML中绑定了这样的控件:

<TextBox Name="txtFirstName" Text="{Binding FirstName}"/>

这样可行,但它似乎不是正确的方法。这似乎是一个简单的例子,但我还没有发现任何有用的东西。

有关此类简单绑定的教程的任何建议或链接吗?

2 个答案:

答案 0 :(得分:4)

像乔尔说你走在正确的轨道上。在某些时候,您需要在后面的代码中显式设置DataContext。这通常在顶层完成 - 比如在Window类中 - 并且所有其他DataContext都应该通过DataBindings设置。

对于您的具体示例,您说您正在使用UserControl。您应该能够直接将UserDetails控件的DataContext绑定到正在使用控件的位置,因此您不需要在UserControl的代码中设置DataContext。至少,UserControl的用户通常会告诉UserControl要使用哪些数据。

假设您有一个AllEmployees类,其属性为SelectedEmployee。您在Window上将此对象的实例设置为DataContext - 在后面的代码中。现在,您希望窗口显示SelectedEmployee的用户详细信息。构建UserDetails控件是假设它有一个绑定到其DataContext的Employee对象,现在通过在DataBinding中设置它来确保它有一个:

<Window xmlns:local="YourNamespaceHoldingTheUserDetailsControl>
    ..
    <local:UserDetails DataContext={Binding SelectedEmployee} />
    ..
</Window>   

您还可以向UserDetails类添加一个Employee属性,该类将设置DataContext - 如果您认为这在绑定中看起来更好。

要改善GUI与域模型之间的分离,您应该明确了解the MVVM pattern。我最初是通过Jason Dollinger几次观看this video来学习的。该视频将教你很多关于WPF的有用信息。 This question似乎也在这个问题上有一些有价值的联系。

祝学习WPF好运!它与其他GUI框架有点不同,因此学习曲线可能有点陡峭。但是一旦你进入它,这是一个很棒的地方!

答案 1 :(得分:2)

你实际上是在正确的轨道上。

我建议你阅读this article on M-V-VM