c# - DataGridComboBoxColumn 不显示 SelectedItem

标签 c# wpf mvvm

我有一个 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/

相关文章:

android - 删除在闭包内创建的实时数据 Observer

c# - 检查文件访问权限,获取进程 ID

c# - 如何使用javascript点击页面上的json超链接

wpf - 如何使 WPF 输入控件在触摸屏上获得焦点时显示虚拟键盘

wpf - Silverlight float 内容右侧

c# - OnPropertyChange 触发顺序

c# - MVVM UI 使用 WPF 控制用户依赖的可见性

c# - mvvm 通用应用程序为什么它没有挂起

c# - ASP.NET 成员资格/自动登录现有用户

c# - 在不过度绘制网格的情况下绘制 Winform 图表的背景