绑定DataGrid中的两列

时间:2010-11-19 02:55:18

标签: wpf binding wpfdatagrid

我有一个DataGrid绑定到一个包含两个属性的列表。

DataGrid中的第一列是DataGridTemplateColumn,里面有ComboBox。

DataGrid中的第二列是DataGridTextColumn,它与转换器捆绑在一起。

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

怎么做?

1 个答案:

答案 0 :(得分:0)

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

修正了第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>