2010-02-11 34 views
6

我是WPF的Windows应用程序开发的新手,只是想先把它放在那里。我正在使用Visual Studio 2010和.NET Framework 4.0。简单的增删改查工作WPF和数据绑定

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

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

我试图在构造函数如下:

DataContext = _employee; 

我在XAML绑定控件像这样:

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

这工作,但它似乎并不像正确的方法去做吧。这看起来就像一个简单的例子,但我还没有发现任何有用的东西。

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

+0

您可能会发现,一旦您了解了MVVM的魔力,就不需要您的员工数据的UserControl,只需一个模板。 – 2010-02-12 20:16:17

回答

4

像乔尔说你正确的轨道上。在某些时候,您需要在后面的代码中显式设置DataContext。这通常会在顶层完成 - 就像在Window类中一样 - 并且所有更多的DataContext应该通过DataBindings进行设置。

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

比方说,您有一个AllEmployees类的SelectedEmployee属性。您可以在窗口中将此对象的实例设置为DataContext - 在后面的代码中。现在您希望您的窗口显示SelectedEmployee的用户详细信息。该的UserDetails控制是建立假设它拥有绑定到其的DataContext Employee对象,而现在你要确保它有一个通过在数据绑定设置这样的:

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

您也可以将员工属性添加到您的UserDetails类将设置DataContext - 如果你认为这看起来更好的绑定。

为了改善GUI与您的域模型之间的分离,您应该明确地了解the MVVM pattern。我最初通过Jason Dollinger观看了this video几次。该视频将教你关于WPF的很多有用的东西。 This question也似乎有关于这个问题的一些有价值的链接。

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