选择组合框/文本框时选择ListView项目WPF MVVM

时间:2013-08-21 07:44:56

标签: c# wpf mvvm

我有一个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个组合框。例如,具有不同软件的组合框和具有该软件的不同版本的组合框。

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

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

更改组合框内的值时,这并不意味着选择了该行。因此,当我尝试调整版本以及所选行时,我不妨调整错误的行。

所以我看到的方式有两种可能性:

  • 调整/选择该行内的某些内容时选择给定的行
  • 了解更改/选择的控件所在的行而不选择

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

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

基本的初学者MVVM错误我想