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

80b*_*wer 6 .net windows data-binding wpf

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

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

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

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

DataContext = _employee;
Run Code Online (Sandbox Code Playgroud)

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

<TextBox Name="txtFirstName" Text="{Binding FirstName}"/>
Run Code Online (Sandbox Code Playgroud)

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

这种简单绑定的教程的任何建议或链接?

sti*_*k81 5

就像乔尔说的,你走在正确的轨道上。在某些时候,您需要在后面的代码中显式设置 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>   
Run Code Online (Sandbox Code Playgroud)

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

为了改善 GUI 和域模型之间的分离,您绝对应该了解MVVM 模式。我最初从Jason Dollinger 的这个视频中学到了几次。该视频将教你很多关于 WPF 的有用的东西。这个问题似乎也有一些关于这个主题的有价值的链接。

祝你学习 WPF 好运!它与其他 GUI 框架有点不同,所以学习曲线可能有点陡峭。但是一旦你进入它,它就是一个美妙的地方!