【问题标题】:binding listbox and refresh data in wpf在 wpf 中绑定列表框并刷新数据
【发布时间】: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 线程)。并使用绑定而不是代码隐藏。

标签: c# wpf xaml mvvm listbox


【解决方案1】:

你应该使用ObservableCollection

ObservableCollection 是一个集合,当集合发生更改(添加、移动、删除)时,它允许集合外部的代码知道。

 private ObservableCollection<Type> collection;

【讨论】:

    猜你喜欢
    • 2014-08-06
    • 2011-08-28
    • 2010-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多