2010-09-03 26 views
1

爲什麼此選定的值綁定工作?我在這裏完全困惑。當我加載頁面時,第一個文本框正確顯示'SelectedComponentAnalysisViewModel.ReacEffectViewModel.Note.NoteID'的內容,在本例中爲'20'。WPF Binding Confusion,組合框試圖在加載值之前更改所選值?

應該發生什麼事情是當頁面第一次加載時,組合框應該有預選ID 20的註釋。

但是,組合框和第二個文本框都是空的(但是音符列表已填充)。只要我選擇了一個條目,第二個組合框就會使用新選擇的註釋ID進行更新。

這隻發生在頁面第一次加載時。只要我選擇一個不同的SelectedComponentAnalysisViewModel,它一切正常,並在組合框中自動選擇適當的值。

我唯一的猜測是,組合框在填充之前試圖綁定到選定的值。有沒有辦法迫使它等待它填充綁定?或者至少在它被填充後嘗試綁定?或者,也許正在發生,並且正在嘗試加載其數據源之前加載?但如果是這樣的話,那麼我會期望第一個文本框是空的。

(文本框就在那裏幫我調試這個)

<ComboBox x:Name="ReactionEffectNoteSelector" ItemTemplate="{DynamicResource DataTemplate1}" ItemsSource="{Binding NoteViewModelList}" SelectedValuePath="NoteID" SelectedValue="{Binding SelectedComponentAnalysisViewModel.ReacEffectViewModel.Note.NoteID, Mode=OneWay}"> 
    <ComboBox.Resources> 
    <DataTemplate x:Key="DataTemplate1"> 
     <TextBlock TextWrapping="Wrap" Text="{Binding NoteID, Mode=OneWay}"/> 
    </DataTemplate> 
    </ComboBox.Resources>   
</ComboBox> 


<TextBlock HorizontalAlignment="Right" Text="{Binding SelectedComponentAnalysisViewModel.ReacEffectViewModel.Note.NoteID}"/> 

<TextBlock HorizontalAlignment="Right" Text="{Binding SelectedValue, ElementName=ReactionEffectNoteSelector, Mode=OneWay}"/> 

回答

1

你爲什麼要綁定SelectedValueSelectedComponentAnalysisViewModel.ReacEffectViewModel.Note.NoteID,然後設置SelectedValuePathNoteID?這意味着有一個SelectedComponentAnalysisViewModel.ReacEffectViewModel.Note.NoteID.NoteID屬性。我想你想把SelectedValue設置爲SelectedComponentAnalysisViewModel.ReacEffectViewModel.Note

+0

不幸的是,這不是問題。問題是我使用NHibernate的一切。因此,列表中的音符實際上並不等於組件分析中的音符,因爲NHibernate使用所有這些代理。但NoteID是獨一無二的,所以我比較這些。 SelectedValuePath設置爲NoteID,因爲在事物的組合框一側它綁定到一個Notes列表,我需要NoteID。我不相信SelectedValuePath對綁定路徑有任何影響。 我對它進行了測試以確認,如果我進行了更改,所選值將全部停止工作,而不僅僅是在頁面加載時。 – Justin 2010-09-04 01:24:27

相關問題