我有一个像这样的数据网格:
<DataGrid ItemsSource="{Binding Path=MyItems, Mode=OneWay}"
SelectedItem="{Binding SelectedItem, Mode=TwoWay}">
在datagrid的每个项目中,我有一个带有项目列表的组合框:
<ComboBox ItemsSource="{Binding SelectedItem.SubItems}"
SelectedItem="{Binding SelectedComboItem}"
IsSynchronizedWithCurrentItem="True"/>
不幸的是,每当我更换1个组合框时,所有其他组合框也会改变他们选择的项目。
帮助!我现在正在寻找一整天的解决方案......
答案 0 :(得分:1)
这里有一个简单的示例来自这里使用的东西,我已经删除了除数据网格中的组合框之外的所有内容,所以希望你能看到你的绑定/逻辑出错了:
<sdk:DataGrid x:Name="MyDatagrid" AutoGenerateColumns="False" ItemsSource="{Binding MyItems}">
<sdk:DataGrid.Columns>
<sdk:DataGridTemplateColumn Width="Auto" Header="Combo column" IsReadOnly="False">
<sdk:DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding SubItems, Mode=OneWay}" SelectedItem="{Binding SelectedComboItem,Mode=TwoWay}" />
</DataTemplate>
</sdk:DataGridTemplateColumn.CellEditingTemplate>
</sdk:DataGridTemplateColumn>
</sdk:DataGrid.Columns>
</sdk:DataGrid>
注意事项:
MyItems
是ViewModel属性
SubItems
是MyItems中项目类的属性,而不是ViewModel。如果你想让你的组合框ItemSource来自viewmodel那么你将需要像:
{Binding DataContext.AllComboItems, RelativeSource={RelativeSource AncestorType=sdk:DataGrid}, Mode=OneWay}
SelectedComboItem
也是MyItems中项目类的属性,而不是ViewModel。