今天我在这个问题上花了很长时间,所以我把它作为一个问题发布,然后发布答案,这样你就可以避免我在过去 183 分钟里经历的那种挫败感。
这是我的源代码的简单版本(也许你的看起来像这样)
.xaml(视图):
<ComboBox SelectedItem="{Binding WindDirection}" ItemsSource="{Binding WindDirections}" DisplayMemberPath="DisplayText" IsEditable="False"/>
.cs(视图模型):
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) 视图中正确显示,但在此视图中它无法正常工作。确切的问题是第一次打开视图时 ComboBox 中没有文本,即使 DisplayText 有一个值!断点显示 DisplayText 值正在正确计算以及所有内容,但在第一次打开视图时不会显示该值。