繁体   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