扩展ListView的模型

时间:2015-02-03 11:15:12

标签: c# wpf entity-framework listview

我使用生成模型的实体框架。它包含一些"静态数据"。我像这样扩展它:

public partial class automaty
{
    public bool ConnectionAvailable { get; set; }
}

字段ConnectionAvailable确定设备是否为" pingable"。

在MainWindow中,我有ListView,名为listView,方法是Refresh():

void Refresh()
    {
        new Thread(delegate()
        {
            this.Dispatcher.Invoke((Action)(() =>
            {
                var automats = Controller.Automats;
                listView.ItemsSource = automats;

                listView.UpdateLayout();
            }));
        }).Start();
    }

每隔30秒调用一次。它工作正常,但我想显示设备状态。所以我创建了一个带有无限循环的线程来ping每个设备:

void PingLoop()
    {
        while (isInPingLoop)
        {
            var automats = listView.Items.Cast<automaty>().ToList();
            foreach (var automat in automats)
            {
                if (isInPingLoop == false)
                {
                    return;
                }
                var connection = Tools.HasConnection(automat.Adres_IP);

                automat.ConnectionAvailable = connection;
            }
        }
    }

在视图中,它是绑定的:

<Image Source="{Binding ConnectionAvailable, Converter={StaticResource BoolToYesNoConverter}, ConverterParameter='pack://application:,,,/MachinesManager;component/Images/green-circle.png|pack://application:,,,/MachinesManager;component/Images/red-circle.png'}">

我的问题是状态圈不是令人耳目一新的。我知道PingLoop可以ping通时将ConnectionAvailable字段设置为true,但它不会显示在屏幕上。

0 个答案:

没有答案