![](/img/trans.png)
[英]Wpf listview combobox binding DisplayMemberPath not working
[英]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.