我正在尝试找出如何在XAML页面中正确设置多个DataContexts。我有一个基本的集合,它是我在后台代码中创建的,并将AutoCompleteBox的ItemSource绑定设置为它。同时,我有另一个datacontext在网格中设置labelsDataSource。如果我设置这个datacontext,AutoCompleteBox的itemsSource绑定就会丢失。AutoCompleteBox就在这个网格里面。我用这种方式将DataContext直接赋值给objetc:
MyAutoCompleteBox.DataContext = this;我想知道有没有更好的方法?提前感谢您的帮助!
设置AutoComplete框:
<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}}">发布于 2011-03-07 06:52:10
我不太明白你的问题--什么是"labelsDataSource"?
但是,如果您发布的是所有代码,没有更多内容,只需从网格中删除datacontext/绑定即可。网格不需要datacontext集(它只是一个可视容器--与数据无关)。
因此,请更改以下内容:
<Grid x:Name="grdBasic_ChildWindow_Right" Style="{StaticResource GridStyle}" DataContext="{Binding Source={StaticResource LabelsDataSource}}"> 要这样做:
<Grid x:Name="grdBasic_ChildWindow_Right" Style="{StaticResource GridStyle}"> https://stackoverflow.com/questions/5213425
复制相似问题