【问题标题】:WPF DataGridComboBoxColumnWPF DataGridComboBoxColumn
【发布时间】:2010-12-26 13:26:39
【问题描述】:

您好,我正在使用 WPF DataGrid,并且正在尝试让 ComboBox Column 工作。

<tk:DataGridComboBoxColumn Header="GroupLevel"
                           DisplayMemberPath="Type"
                           SelectedItemBinding="{Binding Path=GroupLevel}"
                           >
    <tk:DataGridComboBoxColumn.EditingElementStyle>
        <Style TargetType="ComboBox">
            <Setter Property="ItemsSource" Value="{Binding Path=GroupLevel.Group.GroupLevels}" />
        </Style>
    </tk:DataGridComboBoxColumn.EditingElementStyle>

</tk:DataGridComboBoxColumn>

当我查看网格时,该列是空白的,就像它没有使用显示成员路径一样。但是,一旦我在列中单击,组合框就会出现并显示我的 ItemsSource 中的所有项目并选择正确的项目,所以我知道绑定都正常工作,甚至是 DisplayMemberPath。只是当我不编辑单元格时它显示为空白。

我是否错过了某个地方的房产?

谢谢, 劳尔

【问题讨论】:

    标签: wpf data-binding datagrid combobox


    【解决方案1】:

    我很确定这是因为当您不处于编辑模式时,您的 Column 没有项目源,而 ComboBox 不能有没有项目源的选定项目。一旦您进入编辑模式,您的专栏就会获得其项目来源,一切都很酷。您可以通过像这样指定项目来源来解决此问题:-

    <tk:DataGridComboBoxColumn.ElementStyle>
        <Style TargetType="ComboBox">
            <Setter Property="ItemsSource" Value="{Binding Path=GroupLevel.Group.GroupLevels}" />
        </Style>
    </tk:DataGridComboBoxColumn.ElementStyle>
    

    那么您的编辑元素和您的(非编辑)元素都具有相同的 ItemsSource

    【讨论】:

    • 你不会相信这有多难找到。我不知道非编辑模式状态仍然有一个组合框。我以为它只是一个文本块。再次感谢!
    • 是的,它有点奇怪。我发现处理数据网格的代码确实可以让您掌握一些技巧。要查看的代码是 DatagridComboColumn 中的 GenerateElement 函数,它们有一个仅显示组合框。我将数据网格源导入到我的项目中,完成后我将其替换为直接的 dll 引用。
    • 您知道即使在 ViewMode 下也可以使组合框可见。我想让我的用户知道,那是一个 ComboBox
    猜你喜欢
    • 2011-08-03
    • 2010-12-15
    • 2013-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-25
    相关资源
    最近更新 更多