WPF和数据绑定实现简单的CRUD操作

6
我是一名新手,正在学习WPF Windows应用程序开发。我使用的是Visual Studio 2010和.NET Framework 4.0。
我正在开发一个相对简单的管理工具,以员工数据为例。我创建了一个名为UserDetail的小型用户控件,其中包含与Employee类相关的所有字段。
最简单的方法是如何绑定UserDetail上的输入控件?这可能在创建新实例时有一个空白屏幕,或者在编辑现有实例时有现有值。
我在构造函数中尝试了以下内容:
DataContext = _employee;

我在XAML中绑定了一个控件,代码如下:

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

这样做可以实现功能,但似乎不是正确的方法。虽然这看起来是一个简单的示例,但我还没有找到任何有用的内容。

是否有任何建议或教程链接可以帮助学习这种简单的绑定方法?


你可能会发现,一旦你理解了MVVM的奥秘,你就不需要一个UserControl来处理员工数据,只需要一个模板即可。 - Robert Rossney
1个回答

5

正如Joel所说,你走在了正确的轨道上。在某个时刻,你需要在代码后台明确设置DataContext。这通常会在顶层中完成——比如在你的Window类中——并且所有进一步的DataContext都应该通过DataBindings来设置。

对于你的具体示例,你说你正在处理一个UserControl。你应该能够直接绑定UserDetails控件的DataContext,因此你不需要在UserControl的代码后台设置DataContext。至少通常情况下,你的UserControl的使用者会告诉它要使用哪些数据。

假设你有一个名为AllEmployees的类,其中包含一个SelectedEmployee属性。你在代码后台将此对象的实例设置为Window的DataContext。现在,你希望你的窗口显示所选员工的用户详细信息。UserDetails控件被构建时假定它已经绑定到了一个Employee对象的DataContext,并且现在你通过设置DataBinding来确保它有一个Employee对象:

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

你也可以给UserDetails类添加一个Employee属性,这将设置DataContext - 如果你认为这在绑定中看起来更好。
为了改善GUI和领域模型之间的分离,你应该确实学习MVVM模式。我最初是通过多次观看Jason Dollinger的这个视频学到的。这个视频将教你很多有用的关于WPF的东西。这个问题似乎也有一些有价值的链接。
祝你学习WPF顺利!它与其他GUI框架有点不同,所以学习曲线可能会有点陡峭。但一旦你进入了它,它就是一个美妙的地方!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接