如何将窗口或其子项的数据上下文绑定到窗口的一个特定属性
本文关键字:窗口 一个 属性 上下文 数据 绑定 | 更新日期: 2023-09-27 18:33:10
一个有点愚蠢的问题,但不知何故,我找不到如何将Window
或其Content
的DataContext
(例如Grid
面板)绑定到Window
的一个特定属性(例如,在下面的示例中ViewModel
):
法典:
internal partial class MyWin : Window
{
public MyViewModelType ViewModel { get; set; }
...
}
XAML:
<Window x:Class="MyNs.MyWin"
...
DataContext="{Binding RelativeSource={RelativeSource Self}}" />
<Grid DataContext={Binding ViewModel}> <!-- doesn't work??? -->
...
</Grid>
</Window>
我认为你这样做的方式是错误的
如果您的窗口进行了连接,它将正常工作
public partial class MyWindow
{
public MyWindow()
{
InitializeComponent();
DataContext = ViewModel = new MyViewModelType();
}
}
请定义视图模型的字段,因为它不会更改并实现 INPC
private MyViewModelType viewmodel;
public MyViewModelType ViewModel
{
get
{
if(viewmodel == null)
{
viewmodel = new MyViewModelType();
}
return viewmodel;
}
set
{
viewmodel = value;
OnPropertyChanged("ViewModel")
}
}
其余代码保持不变。