【发布时间】:2013-08-21 19:37:04
【问题描述】:
我有一个ListView,其中包含itemssource 的对象集合和SelectedItem 的选定对象。
<ListView Margin="5 0 5 0" ItemsSource="{Binding ObjectCollection}" SelectedItem="{
Binding SelectedObject}" Grid.Row="1">
在ListView.View 里面我有几个GridViewColumns,每个都有一个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 个组合框。例如,一个包含不同软件的组合框和另一个包含该软件不同版本的组合框。
只要软件在某一行发生变化,就应该更新可能的版本。
问题: 我如何知道软件组合框也属于哪个对象,以便调整该对象的可能版本?
当您更改组合框中的值时,这并不意味着该行已被选中。所以当我尝试调整所选行的版本时,我可能会调整错误的行。
所以我认为有两种可能性:
- 只要调整/选择该行内的某些内容,就选择给定行
- 无需选择即可了解更改/选定控件位于哪一行
任何帮助将不胜感激。
【问题讨论】:
-
你知道 ObjectCollection 的顺序吗?在这种情况下,我可能会使用 ListView.SelectedIndex 作为最后的手段。
-
您是否在代码隐藏中定义了 ComboBox.SelectionChanged 处理程序?
-
是的,我确实定义了处理程序。问题是选定的索引仍然可以是 3,例如当它是第 5 行中的组合框已更改时...