我有下一个属性的列表框:
SelectedItem="{Binding SelectedItem, Mode=TwoWay}"
x:Name="listBox"
ItemsSource="{Binding Items}"
在代码中我有一个静态模型,它可以在几个窗口中使用。
只能同时显示一个窗口。
如果已经加载了UI,一切正常,没有任何问题。 但是当窗口准备加载时,我设置SelectedItem什么也不做(选择第一项)
当我设置brakepoint时,我注意到从视图调用的SelectedItem为NULL或第一项。 (StackTrace不包含我的代码)
我尝试在加载视图之前和之后设置所选项目:
model.SelectedItem=first;
view.Loaded += (o, e) =>
{
model.SelectedItem=first;
}
我仍有同样的问题。
答案 0 :(得分:1)
我认为在加载窗口期间会评估Xaml DataBinding。
因此,如果SelectedItem
事件在SelectionChanged
发生之前被触发,则Window.Loaded
在{{1}}事件中为空是正常的。
您可以通过在窗口完全加载之前检查列表框是否包含项目来验证这一点。
答案 1 :(得分:0)
Сhanging属性的顺序解决了问题。 将ItemsSourcefirst绑定,然后绑定SelectedItem。