【问题标题】:WPF DataGrid bind to cell of same rowWPF DataGrid 绑定到同一行的单元格
【发布时间】:2011-09-02 12:19:29
【问题描述】:

我有一个包含 3 列的数据网格,第一列是一个 ComboBox,它为所有单元格填充了相同的内容。现在,第二列也是一个 ComboBox ,每个单元格都需要由同一行第一列的选定项中的 List 填充。如何将列单元格绑定到同一行中的另一个列单元格?第三列,文本列,应填充第二列中所选项目中的属性。

【问题讨论】:

    标签: wpf xaml data-binding


    【解决方案1】:

    我假设您的 DataRow 对象包含在 Column1 中选择的任何内容的 SelectedIndex 或 SelectedItem,因此您可以将 Column2 DataSource 建立在该值的基础上。

    public class ViewModel
    {
        public SomeClass Column1SelectedItem {get; set;}
    }
    
    <ComboBox x:Name="Column2" DataSource="{Binding Column1SelectedItem.Items}" />
    

    【讨论】:

    • 不,抱歉,它不包含所选项目或索引。那是因为多对多的关系。无论如何,我需要一些不依赖于数据模型的东西。此外,我在一个最讨厌的地方工作,它拒绝简单的代码背后的简单解决方案,并且喜欢我拼命想用纯 xaml 编写东西。
    • 我可能已经找到了方法,但我不确定如何用 xaml 语法编写它...如何编写在另一个相对源中具有相对源的绑定?我打算上树到 DataGridCellsPanel,然后下树到 ComboBox,使用类型作为我的搜索指南,并添加路径以选择 DataGridCellsPanel 的右子单元格。
    • 我所拥有的是:{Binding RelativeSource="{RelativeSource AncestorType=DataGridCellsPanel, Mode=FindAncestor}, Path=Children[0]} 但这只会让我找到正确的单元格。如果我尝试获取该单元格的内容我得到了一个 ContentPresenter,而 ConetentPresenter 的内容是对我没有帮助的行项目。
    • 好的!我找到了一种可行的方法!它并不完美,因为它从每个元素中获取一个绑定并使用 Tag 属性作为一种中间人,我使用相对源来查找第一列的组合框单元格并将所选项目放在它的标签中,因为我已经可以到达那个第二列中的单元格很容易将绑定设置为相同的标签。
    猜你喜欢
    • 1970-01-01
    • 2013-12-27
    • 2010-10-24
    • 2021-07-11
    • 1970-01-01
    • 2011-12-12
    • 1970-01-01
    • 2014-10-27
    • 2017-10-04
    相关资源
    最近更新 更多