這兩個元素所在的用戶控件具有名爲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完全不同的。 –