控件如何确定要使用哪个DataContext
本文关键字:DataContext 何确定 控件 | 更新日期: 2023-09-27 18:08:04
我有一个包含控件的窗口
控件有一个视图模型集作为DataContext对象。
Window对象有自己的ViewModel集作为DataContext。
如果我在窗口XAML内绑定控件的属性,它如何确定使用哪个DataContext ?
使用底部方法解析数据上下文。这意味着首先在控件本身中搜索属性,然后是控件的父级,然后是专利的父级,以此类推,直到找到属性或到达根窗口。
有一些可能的方法:
1)您可以从后面的代码中决定什么是数据上下文:DataContext = this;
<-例如
2)你可以通过DictionaryResources来做,你可以在App.xaml:
<DataTemplate DataType="{x:Type viewModel:SolutionsToRecoverViewModel}">
<someView:SolutionsRecovery/>
</DataTemplate>
3)你可以自己创建一个字典文件(并编写最后的xaml代码),并在初始化窗口时注册它:
public class someClass
{
private static bool _registerUIMapping = false;
public CopyNPasteBottemViewModel()
{
if (!_registerUIMapping)
{
ResourceDictionary MyResourceDictionary = new ResourceDictionary();
MyResourceDictionary.Source = new Uri("somePath/UIMapping.xaml", UriKind.Relative);
Application.Current.Resources.MergedDictionaries.Add(MyResourceDictionary);
_registerUIMapping = true;
}
}
private bool _doThisForTheNextConflictProperty = false;
public bool DoThisForTheNextConflict
{
get
{
return _doThisForTheNextConflictProperty;
}
set
{
_doThisForTheNextConflictProperty = value;
OnPropertyChanged("DoThisForTheNextConflict");
}
}
}