簡體   English   中英

WPF DataBinding-綁定到更改引用對象的代碼隱藏變量

[英]WPF DataBinding - bind to code-behind variable which changes referenced object

我想做什么:我有一個ListBox綁定到ObservableCollection<MyClass> 選擇項目時,我想在某些標簽中顯示其某些屬性。 這里有什么步驟? 我已經將標簽的內容設置為{Binding Path=PropertyName} 他們的DataContext應該是什么?

我要怎么做:我在窗口的代碼隱藏中保留了一個私有變量,稱為MyClass selectedItem ,我希望所有綁定都指向該變量及其屬性。 在我看來,綁定到代碼邏輯中具有明確含義的變量比呈現元素的所選項目更“語義”。

此變量可以並且將在任何給定時間引用不同的MyClass實例(我將在ListBox SelectionChanged處理程序中對其進行更改)。 我希望綁定能夠反映這一點-始終指向selectedItem當前引用的實例的屬性。 這會工作嗎? 綁定是否總是指向變量所指向的對象? 還是會在設置綁定時指向變量所引用的對象? (后者將是我的猜測)

我可以想到的可能替代方法:綁定到列表框的SelectedItem,而不是引用它的變量。 如果要這樣做,如何使其成為類型安全的? 如何確保綁定知道它不是與通用ListBoxItem一起使用,而是與MyClass實例一起使用,以便可以看到其屬性? 需要這個嗎?

有什么建議或解釋為什么我會很愚蠢,還是有經驗的人可以選擇替代方法? 謝謝!

我建議您使用替代方法,我認為這是做您想要的事情的常用方法。 如果您沒有在代碼后面或XAML中填充ListBox,則SelectedItem屬性將保存MyClass實例而不是ListBoxItem實例。

然后,要么將ListBox的SelectedItem屬性用作標簽的DataContext,要么在ViewModel中創建類型MyClass的屬性,該屬性綁定到SelectedItem屬性(Mode = TwoWay)。 然后,您可以像這樣綁定其屬性:

<Label Text="{Binding Path=MySelectedItem.Text}"/>

在這種情況下,標簽的DataContext必須是ViewModel。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM