DataGrid 中两列之间的绑定

发布于 2024-10-03 10:35:08 字数 231 浏览 1 评论 0原文

我有一个 DataGrid,它绑定到具有两个属性的列表。

DataGrid 中的第一列是 DataGridTemplateColumn,它内部有 ComboBox。

DataGrid 中的第二列是 DataGridTextColumn,它与转换器绑定。

每当我更改第一列中的组合框值时,必须触发第二列转换器。因此,根据转换器中的一些计算,我可以将值返回到第二列,

如何做到这一点?

I have a DataGrid which is binded to a list with two properties.

First column in the DataGrid is DataGridTemplateColumn and it has ComboBox inside.

Second column in the DataGrid is DataGridTextColumn and it is binded with a converter.

Whenever i change the combobox value in the first column, the second column converter must be triggered. So based on some calculation in the converter i can return the value to second column

how to do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

九歌凝 2024-10-10 10:35:08

您可以通过绑定源路由它,将组合框的选定项目绑定到绑定数据,然后使用转换器将选定对象绑定到第 2 列。在两列之间共享所选项目,并且对于第二列,在绑定中使用转换器,因此它会被触发。

更正了第 2 列绑定中的复制粘贴错误

类似这样,

Presenter / ViewModel
class DataSource : INotifyPropertyChanged {
  // raise PropertyChanged when required
  public ObservableCollection<string> Columns1Values {get;set;}
  // raise PropertyChanged when required
  public string SelectedColumn1Value {get; set;}
}

查看

<dg:DataGrid
    Name="sampleDG"
    ItemsSource={Binding DataSourceObject}>
    <dg:DataGridWidget.Columns>
        <dg:DataGridTemplateColumn
            Header="Column 1">
            <datagrid:DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <Label Content="{Binding Path=SelectedColumn1Value, Mode=TwoWay}"/>
                </DataTemplate>
            </datagrid:DataGridTemplateColumn.CellTemplate>
            <datagrid:DataGridTemplateColumn.CellEditingTemplate>
                <DataTemplate>
                    <ComboBox
                        ItemsSource="{Binding Path=Column1, Mode=TwoWay}"
                        SelectedItem="{Binding Path=SelectedColumn1Value, Mode=TwoWay}"
                    />
                </DataTemplate>
            </datagrid:DataGridTemplateColumn.CellEditingTemplate>
        </dg:DataGridTemplateColumn>
        <dg:DataGridTextColumn 
            Header="Column 2"
            Binding="{Binding Path=SelectedColumn1Value, Converter={StaticResource selectedConverter}, Mode=TwoWay}}">
        </dg:DataGridTextColumn>
    </dg:DataGridWidget.Columns>
</dg:DataGrid>

You can route that through your bound source, bind the selected item of combobox to your bound data and then bind the selected object to column 2 using converter. Share the selecteditem between two columns and for the second column use the converter in binding, so it gets triggered.

Corrected copy paste error in column 2 binding,

Something like this,

Presenter / ViewModel
class DataSource : INotifyPropertyChanged {
  // raise PropertyChanged when required
  public ObservableCollection<string> Columns1Values {get;set;}
  // raise PropertyChanged when required
  public string SelectedColumn1Value {get; set;}
}

View

<dg:DataGrid
    Name="sampleDG"
    ItemsSource={Binding DataSourceObject}>
    <dg:DataGridWidget.Columns>
        <dg:DataGridTemplateColumn
            Header="Column 1">
            <datagrid:DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <Label Content="{Binding Path=SelectedColumn1Value, Mode=TwoWay}"/>
                </DataTemplate>
            </datagrid:DataGridTemplateColumn.CellTemplate>
            <datagrid:DataGridTemplateColumn.CellEditingTemplate>
                <DataTemplate>
                    <ComboBox
                        ItemsSource="{Binding Path=Column1, Mode=TwoWay}"
                        SelectedItem="{Binding Path=SelectedColumn1Value, Mode=TwoWay}"
                    />
                </DataTemplate>
            </datagrid:DataGridTemplateColumn.CellEditingTemplate>
        </dg:DataGridTemplateColumn>
        <dg:DataGridTextColumn 
            Header="Column 2"
            Binding="{Binding Path=SelectedColumn1Value, Converter={StaticResource selectedConverter}, Mode=TwoWay}}">
        </dg:DataGridTextColumn>
    </dg:DataGridWidget.Columns>
</dg:DataGrid>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文