这两个元素所在的用户控件具有名为ColumnTypes的属性.
每一元素用相同的表达到主的datacontext相对参考,但第一个广告不工作,而后者则.
你有任何想法如何调查吗?
<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>
Run Code Online (Sandbox Code Playgroud)
System.Windows.Data错误:4:无法找到绑定源,引用'RelativeSource FindAncestor,AncestorType ='System.Windows.Controls.UserControl',AncestorLevel ='1''.BindingExpression:路径= DataContext.GetColumnTypes; 的DataItem = NULL; target元素是'DataGridComboBoxColumn'(HashCode = 53813616); target属性是'ItemsSource'(输入'IEnumerable')
这是一个已知的限制DataGridComboBoxColumn.
你可以在MSDN上看到你可以绑定到它的ItemsSource属性的东西.常规财产不是其中之一,所以你的情况不会起作用.
实现你想要的不同方法是制作一个DataGridTemplateColumn包含a的东西ComboBox.
在你的情况下,看起来像这样:
<DataGrid.Columns>
<DataGridTemplateColumn Header="Type">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding DataContext.GetColumnTypes,
RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6981 次 |
| 最近记录: |