DataGridComboBoxColumn无法更新模型 WPF。

3

我正在使用WPF中的Datagrid和DataGridComboBoxColumn。请查看以下代码:

<DataGrid>...                 

    <DataGridComboBoxColumn Header="Category" Width="200"                                        
                                    SelectedValueBinding="{Binding SelectedCategory, UpdateSourceTrigger=PropertyChanged}"
                                    DisplayMemberPath="CategoryName"
                                    SelectedValuePath="CategoryID">
        <DataGridComboBoxColumn.ElementStyle>
            <Style TargetType="ComboBox">
                <Setter Property="ItemsSource" Value="{Binding CategoriesList}"></Setter>
            </Style>
        </DataGridComboBoxColumn.ElementStyle>
        <DataGridComboBoxColumn.EditingElementStyle>
            <Style TargetType="ComboBox">
                <Setter Property="ItemsSource" Value="{Binding CategoriesList}"></Setter>
            </Style>                        
        </DataGridComboBoxColumn.EditingElementStyle>
   </DataGridComboBoxColumn>

模型如下:
public CategoryModel SelectedCategory { get; set; }
public ObservableCollection<CategoryModel> CategoriesList
{
    get;
    set;
}

现在每当我更改下拉框中的选择时,它会显示红色边框,无法将更改提交到源。
1个回答

1
这是错误的:

<DataGridComboBoxColumn Header="Category" Width="200"                                        
                                SelectedValueBinding="{Binding SelectedCategory, UpdateSourceTrigger=PropertyChanged}"
                                DisplayMemberPath="CategoryName">

移除SelectedValuePath,否则会导致类型不匹配。我怀疑你也不需要UpdateSourceTrigger...尝试省略它。


是的,我遇到了类型不匹配的问题。但是造成类型不匹配的原因是什么呢? 当选择改变时,如何更新模型? - Prabhanjan Kumar Mahapatra
1
嗨,谢谢Florian。我刚刚找到了解决方案,我将SelectedValueBinding替换为SelectedItemBinding,现在它可以工作了。 - Prabhanjan Kumar Mahapatra

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接