选择组合框/文本框时,选择ListView项目WPF MVVM
本文关键字:选择 MVVM 项目 WPF ListView 组合 文本 | 更新日期: 2023-09-27 18:28:22
我有一个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个组合框。例如具有不同软件的组合框和具有该软件的不同版本的另一组合框
每当软件在某一行发生更改时,都应更新可能的版本
问题是:我如何知道软件组合框也属于哪个对象,以便调整该对象的可能版本
当您更改组合框内的值时,这并不意味着该行已被选中。因此,当我试图调整所选行的版本时,我可能会调整错误的行。
因此,在我看来,有两种可能性:
- 每当调整/选择给定行中的某个内容时,请选择该行
- 无需选择即可了解更改/选择的控件所在的行
任何帮助都将不胜感激。
解决方案是在属性更改时不使用事件处理程序,而只处理行对象属性的更改。因此,当"软件"的属性更改时,调用一个方法来调整该软件的"PossibleVersions"属性。所有这些都在行对象的VM中。
基本初学者MVVM错误我猜