【发布时间】:2013-03-26 12:53:05
【问题描述】:
我有带有下一个属性的列表框:
SelectedItem="{Binding SelectedItem, Mode=TwoWay}"
x:Name="listBox"
ItemsSource="{Binding Items}"
在代码中,我有一个静态模型,它可以在几个窗口中使用。
只能同时显示一个窗口。
如果 UI 已加载,则一切正常。 但是当窗口刚刚准备好加载时,我设置 SelectedItem 什么都不做(第一个项目被选中)
当我设置刹车点时,我注意到 SelectedItem 从视图中调用,带有 NULL 或第一个项目。 (StackTrace 不包含我的代码)
我尝试在视图加载之前和之后设置所选项目:
model.SelectedItem=first;
view.Loaded += (o, e) =>
{
model.SelectedItem=first;
}
我还是有同样的问题。
【问题讨论】:
-
如果你试图执行例如通过命令它有效吗?我知道这不是理想的实现,但我认为您提前调用它,因此
Items为空。 -
看起来改变属性的顺序解决了问题...
-
你能给我一些细节吗?我也对解决方案感兴趣。
-
我只是在 SelectedItem 之前设置了 ItemsSource,现在它可以工作了。看起来它在设置 ItemsSource 之前尝试 SelectedItem。
-
啊,我记得。我认为这就像在
ComboBox上创建绑定一样。 WPF 的非常奇怪的行为。
标签: .net wpf mvvm binding listbox