这两个元素所在的用户控件具有名为ColumnTypes的属性。将数据绑定到XAML中的父数据环境
这些元素中的每一个都指向主要数据上下文相同的表达式,但第一个是而不是工作,而后者是。
你有什么想法如何调查?
<DataGrid x:Name="DataGrid" AutoGenerateColumns="False" ItemsSource="{Binding Table}" >
<DataGrid.Columns>
<DataGridComboBoxColumn Header="Type" >
<DataGridComboBoxColumn.ItemsSource>
<Binding Path="DataContext.GetColumnTypes" RelativeSource="{RelativeSource FindAncestor, AncestorType={x:Type UserControl}}" />
</DataGridComboBoxColumn.ItemsSource>
</DataGridComboBoxColumn>
</DataGrid.Columns>
</DataGrid>
<ComboBox Grid.Row="1">
<ComboBox.ItemsSource>
<Binding Path="DataContext.GetColumnTypes" RelativeSource="{RelativeSource FindAncestor, AncestorType={x:Type UserControl}}" />
</ComboBox.ItemsSource>
</ComboBox>
System.Windows.Data错误:4:不能用于与参照结合找到源 '的RelativeSource FindAncestor,AncestorType =' System.Windows.Controls.UserControl” ,AncestorLevel ='1''。 BindingExpression:路径= DataContext.GetColumnTypes;的DataItem = NULL;目标元素是'DataGridComboBoxColumn'(HashCode = 53813616);目标属性是'ItemsSource'(类型'IEnumerable')
谢谢你这个答案。从我的亵渎神灵这种事情的不可预测性,我仍然感到困惑。它真的是wpf开发者的常识吗?有很多这样的事情吗? – nicolas
很高兴帮助。有些事情在WPF中有点奇怪,是的。通常在Stackoverflow上可以找到很好的答案。它绝对是与Winforms完全不同的。 –