c# - 如何为 DataGridComboBoxColumn WPF 绑定(bind)数组

标签 c# .net wpf mvvm binding

我有一个带有组合框的 DataGrid

<DataGridComboBoxColumn Header="Header 2" ItemsSource="{Binding Pet}">

基于 MVVM 模式的项目。当我尝试在 TextColumn 上显示数据时,它可以工作
<DataGridTextColumn Header="Header 1" Binding="{Binding ID}" />

但是,我不知道如何为 DataGridComboBoxColumn 绑定(bind)数据。

型号代码:
    public string ID
    {
        get { return _id; }
        set { _id = value; NotifyPropertyChanged("ID"); }
    }
    public string[] Pet
    {
        get { return _pet; }
        set { _pet = value; NotifyPropertyChanged("Pet"); }
    }

最佳答案

而不是使用 <DataGridComboBoxColumn>尝试使用 <DataGridTemplateColumn>像这样

<DataGridTemplateColumn Header="ID">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <ComboBox ItemsSource="{Binding Path=DataContext.Pet, RelativeSource={RelativeSource AncestorType={x:Type Window}}}" SelectedItem="{Binding ID}"/>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>

在此示例中,我将 Combobox 的项目源绑定(bind)为当前 ViewModel 中定义的 Pet 数组集合,并将所选项目绑定(bind)为绑定(bind)到完整 DataGrid 的 List<> 集合的 ID 属性。

关于c# - 如何为 DataGridComboBoxColumn WPF 绑定(bind)数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21550451/

相关文章:

.net - 为什么我要把我的元素放在袋子里?

c# - 如何在 Linq GroupBy 中选择前 N 行

javascript - 无法修改 Controls 集合,因为该控件包含代码块(即 <% ... %>)。Telerik.Web.UI.RadAjaxControl.MoveUpdatePanel

c# - 如何在 C# 中快速将二维数组转换为一维数组?

c# - 重新编译Silverlight以解决WPF问题

sql-server - Windows 应用程序 (WPF) 的独立数据库

wpf - 在WPF MVVM Prism应用程序中使用OnPropertyChanged和发布之间有什么区别?

c# - Chrome 后退按钮跳过页面

.net - 如何在Windows容器中使用dotnet监视器收集应用程序指标

.net - 可以更改 WCF 服务在 jsdebug 中生成的 URL 吗?