【发布时间】:2016-08-25 02:09:49
【问题描述】:
我已经用 MVVM 模式在 XAML 中的 Listbox 的属性变量和 ItemSource 之间绑定了一个列表框。
XAML:
<ListBox Name="lbTemp" ItemsSource="{Binding SrcPermissionList}"/>
视图模型:
public List<CheckBox> SrcPermissionList= new List<CheckBox>();
CheckBox ckbox = new CheckBox();
SrcPermissionList.Add(ckbox);
然后它导致了一个 STA 线程访问问题,因为我试图以动态方式添加复选框。至于它通过Service+Server获取的数据。所以我使用了 Dispatch 代码来解决这个问题。
Application.Current.Dispatcher.Invoke(new Action(delegate ...
毕竟,它似乎有点不起作用,但当我调试时,它实际上有数据。在尝试操作列表框(例如单击它或向下滚动)之前,它不会呈现任何内容,如下所示。
Image of listbox which is not working
我不知道如何在不触摸列表框的情况下刷新绑定的列表框。 数据显示至少我只点击了 1 次,或者只有 1 次滚动。 我认为线程之间可能有问题。并且 UI 线程不知道 itemsource 何时到来。 我做错了什么?
【问题讨论】:
-
不要从不同的线程触摸它(或者如果必须的话,可以调用 UI 线程)。并使用绑定而不是代码隐藏。