我使用MVVM模式在XAML中的属性变量和Listbox的ItemSource之间绑定(bind)了一个列表框。

XAML:

<ListBox Name="lbTemp" ItemsSource="{Binding SrcPermissionList}"/>

ViewModel:
public List<CheckBox> SrcPermissionList= new List<CheckBox>();
CheckBox ckbox = new CheckBox();
SrcPermissionList.Add(ckbox);

然后,这引起了STA线程访问问题,因为我尝试以动态方式添加复选框。至于数据是通过Service + Server获取的。所以我用调度代码来解决这个问题。
Application.Current.Dispatcher.Invoke(new Action(delegate ...

毕竟,这似乎不起作用,但是当我调试时,它实际上具有数据。在尝试操作列表框(例如单击它或向下滚动)之前,它不会呈现任何内容,如下所示。

Image of listbox which is not working

我不知道如何在不触摸列表框的情况下刷新绑定(bind)的列表框。
数据显示至少我只单击了1次,或者仅单击了1个滚动刻度。
我认为线程之间可能有问题。 UI线程不知道itemsource何时到达。
我究竟做错了什么?

最佳答案

您应该使用 ObservableCollection

ObservableCollection是一个集合,它使集合外部的代码可以知道何时发生对集合的更改(添加,移动,删除)。

 private ObservableCollection<Type> collection;

关于c# - 绑定(bind)列表框并刷新WPF中的数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39135661/

10-13 01:59