我有一个 ViewModel(其结构的伪代码):
class ViewModel
{
public List<Package> Packages { get; set; }
}
enum Type
{
Type1,
Type2, ....
}
class Package
{
public Type PackageType { get; set; }
}
这就是我将 DataGrid 与 ViewModel 的属性包绑定(bind)的方式。
<DataGrid ItemsSource="{Binding Packages}">
<DataGrid.Columns>
<DataGridComboBoxColumn ItemsSource="{Binding Source={StaticResource Types}}"
SelectedItemBinding="{Binding PackageType, Mode=TwoWay}">
</DataGridComboBoxColumn>
</DataGrid.Columns>
这就是我定义资源类型的方式:
<Window.Resources>
<CollectionViewSource x:Key="Types">
<CollectionViewSource.Source>
<ObjectDataProvider MethodName="GetNames" ObjectType="{x:Type sys:Enum}">
<ObjectDataProvider.MethodParameters>
<x:Type TypeName="s:Type"/>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
</CollectionViewSource.Source>
</CollectionViewSource>
</Window.Resources>
DataGridComboBoxColumn 可以显示 ComboBox。但是,它不显示 Package.PackageType 的值。它的行为就像绑定(bind)只是一种来源方式。当我更新 ComboBox 时,对象也会更新。另一种方法不起作用。
请帮忙。非常感谢。
最佳答案
感谢所有的答案。我做了更多的研究。结果,问题出在我定义 ObjectDataProvider
时.我需要使用 MethodName="GetValues"
反而。
关于c# - DataGridComboBoxColumn 不显示 SelectedItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21193686/