【问题标题】:Simple CRUD work with WPF and data binding使用 WPF 和数据绑定进行简单的 CRUD
【发布时间】:2010-02-11 19:45:11
【问题描述】:

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

我正在开发一个相当简单的管理工具。为简单起见,假设我正在处理员工数据。我创建了一个名为 UserDetail 的小用户控件,其中包含与 Employee 类相关的所有字段。

在我的 UserDetail 上绑定输入控件的最简单方法是什么?这可能在创建新实例时出现空白屏幕,或者在编辑现有实例时出现现有值。

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

DataContext = _employee;

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

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

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

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

【问题讨论】:

  • 您可能会发现,一旦您了解了 MVVM 的魔力,您的员工数据就不需要 UserControl,只需一个模板。

标签: .net wpf windows data-binding


【解决方案1】:

就像 Joel 说的那样,您走在正确的轨道上。在某些时候,您需要在后面的代码中显式设置 DataContext。这通常会在顶层完成 - 就像在您的 Window 类中一样 - 所有进一步的 DataContext 都应该通过 DataBindings 设置。

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

假设您有一个 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 框架有点不同,因此学习曲线可能有点陡峭。但是一旦你进入它,它就是一个美妙的地方!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-19
    • 1970-01-01
    • 1970-01-01
    • 2011-03-21
    • 2011-06-16
    • 1970-01-01
    • 2011-01-21
    相关资源
    最近更新 更多