2013-08-21 147 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」屬性的方法。所有這些都在虛擬機內部用於行對象。我想