我有一个ListView
,其中包含一组对象itemssource
,所选对象为SelectedItem
。
<ListView Margin="5 0 5 0" ItemsSource="{Binding ObjectCollection}" SelectedItem="{
Binding SelectedObject}" Grid.Row="1">
在ListView.View
内,我有几个GridViewColumn
个,每个CellTemplate
<GridViewColumn CellTemplate="{StaticResource ReferenceToCellTemplate}" Header="{
Binding ColumnName, Converter={StaticResource upperConverter}}" Width="90"
HeaderContainerStyle="{StaticResource StaticGridViewColumnHeaderStyleWhite}"/>
这种模板的一个例子:
<DataTemplate x:Key="ReferenceToCellTemplate">
<ComboBox ItemsSource="{Binding PossibleValuesForProperty, UpdateSourceTrigger=
PropertyChanged}" SelectedItem="{Binding SelectedProperty, UpdateSourceTrigger=
PropertyChanged}" SelectionChanged="Protocol_ComboBox_SelectionChanged"/>
</DataTemplate>
现在问题:
假设我在这个列表视图中有2个组合框。例如,具有不同软件的组合框和具有该软件的不同版本的组合框。
每当软件在某一行中发生变化时,都应该更新可能的版本。
问题: 如何知道软件组合框所属的对象,以便我可以调整此对象的可能版本?
更改组合框内的值时,这并不意味着选择了该行。因此,当我尝试调整版本以及所选行时,我不妨调整错误的行。
所以我看到的方式有两种可能性:
非常感谢任何帮助。
答案 0 :(得分:0)
解决方案是在更改属性时不使用事件处理程序,而只是处理行对象属性的更改。因此,当“软件”的属性发生更改时,请调用一个方法来调整此软件的“PossibleVersions”属性。所有这些都在VM内部用于行对象。
基本的初学者MVVM错误我想