我有一个DataGrid绑定到一个包含两个属性的列表。
DataGrid中的第一列是DataGridTemplateColumn,里面有ComboBox。
DataGrid中的第二列是DataGridTextColumn,它与转换器捆绑在一起。
每当我更改第一列中的组合框值时,必须触发第二列转换器。因此,基于转换器中的一些计算,我可以将值返回到第二列
怎么做?
答案 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>