从DataGrid中访问Window的DataContext时遇到了一些问题。
DataGrid绑定到IBindingList:
public IBindingList Items{ get; set; }
private void initItems()
{
//ItemFactory is a Linq2SQL Context, Items is the view of availabe Items
this.Items = this.ItemFactory.Items.GetNewBindingList();
}
在我的xaml中,我尝试将这些数据填入ComboBox:
<DataGridComboBoxColumn Header="Typ"
DisplayMemberPath="Description"
SelectedValuePath="ItemID"
ItemsSource="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}, Mode=OneWay, Path=DataContext.Items, UpdateSourceTrigger=PropertyChanged}" />
但它不起作用。我已经尝试了很多变种。 ComboBox没有填充。
任何帮助非常感谢!
注意:
同一个Window中的以下ComboBox可以正常工作:
<ComboBox x:Name="workingCombo" ItemsSource="{Binding Path=Items}" DisplayMemberPath="Description" SelectedValuePath="ItemID" />
答案 0 :(得分:1)
DataGridComboBoxColumn
没有直接连接到可视化树,因此FindAncestor
- 操作将失败(并且DataContext也不会被继承)。
DataGridTemplateColumn
并将ComboBox
放入。{
DataTemplate
有帮助。