绑定列表框并刷新wpf中的数据

时间:2016-08-25 02:09:50

标签: c# wpf xaml mvvm listbox

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

XAML:

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

视图模型:

Application.Current.Dispatcher.Invoke(new Action(delegate ...

然后它导致STA线程访问问题,因为我试图以动态方式添加复选框。至于它由服务+服务器获取的数据。所以我使用Dispatch代码来解决这个问题。

#!/usr/bin/perl

use strict;
use Net::Ping;

## Check for an internet connection by pinging Google
my $p = Net::Ping->new("icmp");
while(1){
printf "Checking internet connection.....\n";
    if ($p->ping("172.217.4.132")){
    printf "Internet connection is active\n";
        sleep 1;
    last;
    }
    else{
    printf "Internet connection not established.\n";
        sleep 5*5;
    }
}
## Determine the gateway IP address of the network

my $IP = "192.168.1.1";

system( "nmap -vv $IP/24 -p 139 | grep open" );

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

Image of listbox which is not working

我不知道如何在不触及列表框的情况下刷新绑定列表框。 数据显示至少我只点击一次,或只滚动1个刻度。 我认为它可能在线程中存在问题。和UI线程不知道itemsource何时到来。 我做错了什么?

1 个答案:

答案 0 :(得分:2)

您应该使用ObservableCollection

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

 private ObservableCollection<Type> collection;