簡體   English   中英

ComboBox上的DisplayMemberPath無法正常工作,但綁定似乎正確,無法顯示DisplayMemberPath

[英]DisplayMemberPath on ComboBox not working but Binding seems correct, can't get the DisplayMemberPath to display

我今天在這個問題上花費了很長時間,因此我將其發布為問題,然后發布答案,這樣就可以避免與過去183分鍾的經歷相同的挫敗感。

這是我的源代碼的一個簡單版本(也許您的看起​​來像這樣)

.xaml(查看):

<ComboBox SelectedItem="{Binding WindDirection}" ItemsSource="{Binding WindDirections}" DisplayMemberPath="DisplayText" IsEditable="False"/>

.cs(ViewModel):

public class WindDirectionViewModel{
   //I realize that there may be problems in this code, it's not my real code, just a quick sample

   ...code

   List<WindDirectionObject> WindDirections = new List<WindDirectionObject>();
   WindDirectionObject WindDirection = new WindDirectionObject(); 

   ...code

   public string DisplayText = WindDirections.First(x => x.Equals(WindDirection)).DisplayString;

   ...code

}

所有代碼都可以正常工作並且相同的(.cs)ViewModel甚至可以在另一個(.xaml)視圖中正確顯示,但是在視圖中不能正常工作。 確切的問題是,即使DisplayText有值,第一次打開視圖時ComboBox中也沒有文本! 斷點表明DisplayText值已正確計算,並且一切正常,但第一次打開視圖時不會顯示該值。

如果在.xaml組合框中使用DisplayMemberPath屬性- 必須ItemsSource屬性放在.xaml ...中的SelectedItem屬性之前 ,否則將不顯示DisplayMemberPath值。

之前:

<ComboBox ItemsSource="{Binding WindDirections}" SelectedItem="{Binding WindDirection}" DisplayMemberPath="DisplayText" IsEditable="False"/>

后:

<ComboBox SelectedItem="{Binding WindDirection}" ItemsSource="{Binding WindDirections}" DisplayMemberPath="DisplayText" IsEditable="False"/>

巴姆。 完美運作。 這可能無法解決您的問題,但肯定可以解決我的問題……希望這可以縮短您的開發時間。 :)

暫無
暫無

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

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