我正在尝试找出如何在XAML页面中正确设置多个DataContexts
。我有一个基本的集合,我在后面的代码中创建并设置ItemSource
绑定og AutoCompleteBox
。与此同时,我还有另一个datacontext
在网格中设置labelsDataSource
。如果我设置此datacontext,则AutoCompleteBox的itemsSource绑定将丢失。 AutoCompleteBox
位于该网格中。我确实以这种方式直接将DataContext
分配给了对象:
MyAutoCompleteBox.DataContext = this;
我想知道是否有更好的方法吗? 提前感谢您的帮助!
设置自动完成框:
<sdk:AutoCompleteBox x:Name="MyAutoCompleteBox" IsTextCompletionEnabled="True" ItemsSource="{Binding Items}" />
代码背后:
public IList<string> Items
{
get;
private set;
}
public Basic_ChildWindow()
{
InitializeComponent();
Items = new List<string>();
Items.Add(@"One");
Items.Add(@"Two");
Items.Add(@"Three");
DataContext = this;
}
同一个XAML页面中的另一个datacontext,AutoCompleteBox位于该网格内:
<Grid x:Name="grdBasic_ChildWindow_Right" Style="{StaticResource GridStyle}" DataContext="{Binding Source={StaticResource LabelsDataSource}}">
答案 0 :(得分:0)
我不确定我理解你的问题 - 什么是“labelsDataSource”?
但是,如果您发布的是所有代码,并且没有更多内容,只需从网格中删除datacontext / binding即可。网格不需要datacontext集(它只是一个可视容器 - 与数据无关)。
所以改变这个:
<Grid x:Name="grdBasic_ChildWindow_Right" Style="{StaticResource GridStyle}" DataContext="{Binding Source={StaticResource LabelsDataSource}}">
对此:
<Grid x:Name="grdBasic_ChildWindow_Right" Style="{StaticResource GridStyle}">