代码之家  ›  专栏  ›  技术社区  ›  Robert Harvey

如何让DataGridTemplateColumn与实现IEditable<T>接口的对象一起工作?

  •  0
  • Robert Harvey  · 技术社区  · 7 年前

    我有一个 DataGrid DataGridComboBox 这是一个很好的专栏。它正确地绑定到项目列表,正确地显示所选项目,正确地选择项目,并将所选项目的ID正确地绑定到基础行模型。

    看起来是这样的:

    <DataGridComboBoxColumn
        x:Name="AssetColumn"
        Width="3*"
        DisplayMemberPath="Item"
        Header="Item"
        ItemsSource="{Binding Data.AssetDescriptions, Source={StaticResource proxy}}"
        SelectedValueBinding="{Binding AssetDescriptionID}"
        SelectedValuePath="AssetDescriptionID" />
    

    我试图通过DataGridTemplateColumn和普通组合框实现同样的功能。我的努力:

    <DataGridTemplateColumn Header="ItemTemplate" Width="3*">
        <DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
                <ComboBox
                    DisplayMemberPath="Item"
                    ItemsSource="{Binding Data.AssetDescriptions, Source={StaticResource proxy}}"
                    SelectedValue="{Binding AssetDescriptionID, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
                    SelectedValuePath="AssetDescriptionID" />
            </DataTemplate>
        </DataGridTemplateColumn.CellTemplate>
    </DataGridTemplateColumn>
    

    不幸的是,这个不尊重 IEditable<T>

    有没有一种方法可以这样写,它的工作方式应该与 可编辑<T> 界面


    我知道我可能需要一个 CellEditingTemplate 让它正常工作,但我不知道该怎么做。我可以把同一个组合框放在 细胞模板 同样,但我不知道如何让列在收到焦点后切换到编辑模式,如果我只将组合框数据模板放在 细胞模板 ,列中不显示任何数据。

    0 回复  |  直到 7 年前
    推荐文章