我在这里看到过几篇文章,人们对如何绑定到DataGridComboBoxColumn感到困惑,
我有过
<DataGridComboBoxColumn SelectedItemBinding="{Binding Collection}" DisplayMemberPath="Name" Header="Name" Width="70">这不管用..。
所以我用
<DataGridComboBoxColumn ItemBinding="{Binding Collection}" DisplayMemberPath="Name"> Header="Name" Width="70">这同样不起作用,为什么绑定到数据组合与原始组合框不同。
<ComboBox ItemsSource="{Binding Collection}" DisplayMemberPath="Name" HorizontalAlignment="Left">这是可行的
在DataGrid中绑定到组合框的正确方法是什么?
--编辑--
我可能已经发现了问题,我有一个DataGrid绑定到一个ItemSource,但是,我希望ComboBoxColumn被绑定到一个不同的Itemsource,这可能吗?
干杯
发布于 2014-04-13 18:26:53
您需要绑定到ItemsSource属性。在EditingElementStyle.中设置它
<DataGridComboBoxColumn>
<DataGridComboBoxColumn.EditingElementStyle>
<Style TargetType="ComboBox">
<Setter Property="ItemsSource" Value="{Binding Collection}"/>
<Setter Property="DisplayMemberPath" Value="Name"/>
</Style>
</DataGridComboBoxColumn.EditingElementStyle>
</DataGridComboBoxColumn>如果希望ItemsSource绑定到DataGrid基础源对象之外的集合,也可以这样做。
假设您的集合AnotherCollection驻留在Window/UserControl的ViewModel中,您可以使用RelativeSource标记扩展与其绑定。
此外,还必须将SelectedItemBinding设置为要设置从ComboBox中选择的值的属性,并在ElementStyle of DataGridComboBoxColumn下声明相同的样式。假设属性名称是要绑定到的Name。
<DataGridComboBoxColumn SelectedItemBinding="{Binding Name}">
<DataGridComboBoxColumn.EditingElementStyle>
<Style TargetType="ComboBox">
<Setter Property="ItemsSource"
Value="{Binding DataContext.AnotherCollection,
RelativeSource={RelativeSource Mode=FindAncestor,
AncestorType=Window}}"/>
<Setter Property="DisplayMemberPath" Value="Name"/>
</Style>
</DataGridComboBoxColumn.EditingElementStyle>
<DataGridComboBoxColumn.ElementStyle>
<Style TargetType="ComboBox">
<Setter Property="ItemsSource"
Value="{Binding DataContext.AnotherCollection,
RelativeSource={RelativeSource Mode=FindAncestor,
AncestorType=Window}}"/>
<Setter Property="DisplayMemberPath" Value="Name"/>
</Style>
</DataGridComboBoxColumn.ElementStyle>
</DataGridComboBoxColumn>https://stackoverflow.com/questions/23046597
复制相似问题