0

我有带有下一个属性的列表框:

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; 
}

我仍然有同样的问题。

4

2 回答 2

1

我认为在加载窗口期间会评估 Xaml DataBinding。因此,如果它在发生之前被触发,那么SelectedItem在事件中为空是正常的。SelectionChangedWindow.Loaded

您可以通过在窗口完全加载之前检查您的列表框是否有项目来验证这一点。

于 2013-04-04T12:57:46.030 回答
0

Сhanging order of properties解决了这个问题。先绑定 ItemsSource,然后再绑定 SelectedItem。

于 2013-04-24T12:07:21.497 回答