在WPF中的XAML中设置DataContext

在WPF中的XAML中设置DataContext,第1张

在WPF中的XAML中设置DataContext

此代码将始终失败。

如所写,它说:“在我的DataContext属性上查找一个名为“ Employee”的属性,并将其设置为DataContext属性”。显然,这是不对的。

要使代码正常工作,请将窗口声明更改为:

<Window x:Class="SampleApplication.MainWindow"    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"    xmlns:local="clr-namespace:SampleApplication"    title="MainWindow" Height="350" Width="525"><Window.DataContext>   <local:Employee/></Window.DataContext>

这将声明一个新的XAML名称空间(本地),并将DataContext设置为Employee类的实例。这将使您的绑定显示默认数据(来自构造函数)。

但是,这实际上不是您想要的。相反,您应该有一个新类(称为MainViewModel),该类具有一个

Employee
您随后绑定到的属性,如下所示:

public class MainViewModel{   public Employee MyEmployee { get; set; } //In reality this should utilize INotifyPropertyChanged!}

现在,您的XAML变为:

<Window x:Class="SampleApplication.MainWindow"        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"        xmlns:local="clr-namespace:SampleApplication"        title="MainWindow" Height="350" Width="525">    <Window.DataContext>       <local:MainViewModel/>    </Window.DataContext>    ...    <TextBox Grid.Column="1" Grid.Row="0" Margin="3" Text="{Binding MyEmployee.EmpID}" />    <TextBox Grid.Column="1" Grid.Row="1" Margin="3" Text="{Binding MyEmployee.EmpName}" />

现在,您可以添加(其他类型,名称的)其他属性。有关更多信息,请参见实现Model-View-
ViewModel模式。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5499148.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存