2013-08-21 119 views
1

我有一个ListView其中包含的对象集合itemssource和选定的对象SelectedItem当选择组合框/文本框时选择ListView项目WPF MVVM

<ListView Margin="5 0 5 0" ItemsSource="{Binding ObjectCollection}" SelectedItem="{ 
Binding SelectedObject}" Grid.Row="1"> 

里面的ListView.View我有几个GridViewColumn S的每一个都有这样的模板的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个梳子在这个列表视图中的oboxes。例如具有不同软件的组合框和具有该软件的不同版本的组合框。

每当软件在特定行中发生变化时,应该更新可能的版本。

问题: 如何知道软件组合框属于哪个对象,以便我可以调整此对象的可能版本?

当您更改组合框内的值时,这并不意味着该行被选中。所以当我尝试调整版本以及所选行时,我可能会调整错误的行。

所以我看到它的方式有以下两种方式:

  • 选择选择
  • 结识哪一行改变给定行,只要该行里面的东西被调整/ /选择控制是在没有选择它

任何帮助将不胜感激。

+0

你知道ObjectCollection的顺序吗?在这种情况下,我可能会使用ListView.SelectedIndex作为最后的追索权。 – Arhiman

+0

你是否在代码隐藏中定义了ComboBox.SelectionChanged处理程序? – Arhiman

+0

是的,我确定了处理程序。而问题是,选定的索引仍然可以是3,例如当第五行中的组合框发生更改时... –

回答

0

解决方法是在属性更改时不使用事件处理程序,而只是处理行对象属性中的更改。因此,当“软件”属性发生更改时,请调用调整此软件的“PossibleVersions”属性的方法。所有这些都在虚拟机内部用于行对象。我想