Working Experience - WPF 中 DataGrid 控件的应用

时间:2022-05-25 17:12:43

问题:

  • 添加控件后, 编辑单元格会出现异常
  • 绑定 ItemsSource 属性后, 更新绑定对象的数据, UI 不刷新
  • 如何显示控件中 ComboBox 类型

解决方法:

  • 绑定 ItemsSource 属性即可
  • 每次更新绑定对象后, 先 ItemsSource = null, 再重新绑定 ItemsSource
  • 使用静态类型设置 ComboBox 的 ItemsSource, 如下所示:
<Window
    ...
    xmlns:core="clr-namespace:System;assembly=mscorlib"
    xmlns:local="<!--  指向枚举类型所在的命名空间  -->"
    ...>
    <Window.Resources>
        <ResourceDictionary>
            ...
            <!--  Create list of enumeration values  -->
            <ObjectDataProvider
                x:Key="myEnum"
                MethodName="GetValues"
                ObjectType="{x:Type core:Enum}">
                <ObjectDataProvider.MethodParameters>
                    <x:Type Type="local:<!--  枚举类型  -->" />
                </ObjectDataProvider.MethodParameters>
            </ObjectDataProvider>
        </ResourceDictionary>
    </Window.Resources>
    <Grid>
        ...
        <DataGrid
            ...
            <DataGrid.Columns>
                ...
                <materialDesign:MaterialDataGridComboBoxColumn
                    Header="<!--  列标题  -->"
                    ItemsSource="{Binding Source={StaticResource myEnum}}"
                    SelectedValueBinding="{Binding <!--  绑定数据  -->}" />
            </DataGrid.Columns>
        </DataGrid>
    </Grid>
</Window>

参考: