定期更新wpf标签

时间:2013-10-01 07:38:20

标签: wpf wpf-controls dispatcher

我是WPF和C#的新手,试图了解如何从BL类更新UI元素(以保持逻辑和UI之间的分离)bl从c ++网络组件获得定期更新并应更新这个表格一旦出现一个新的论点(我在msdn网站上阅读,但我想看一些具体的例子,以确保我做对了)

1 个答案:

答案 0 :(得分:1)

由于从c ++网络组件获得定期更新评论,我假设您已经有一个系统来更新您的媒体资源。我将在视图模型类中公开您的业务类中的该属性,该类具有公共属性和ICommand函数,专门用于向视图提供所有必需的数据,或UserControl

老实说,我不会在商务舱中拥有那种(或任何)功能(取决于你所说的商务舱)......我个人将其直接放入视图模型中,或者有一位经理/暴露它的服务类。

如果您坚持将其保留在原来的位置,则必须在您的商务舱中实施eventdelegate,以便可以提醒该类别的用户何时价值变化。然后,您只需从视图模型类中将一个处理程序附加到event / delegate,并在实际属性发生更改时轻松更新公开的属性。

所以它会在你的商务舱中出现类似的东西......(我假设你的价值是int,但如果它不正确你就可以改变它......校长是相同):

public delegate void FieldUpdate(int value);

public FieldUpdate OnFieldUpdate { get; set; }

...

private int field;

public int Field
{
    get { return field; }
    set
    {
        if (value != field)
        {
            field = value;
            if (OnFieldUpdate != null) OnFieldUpdate(field);
        }
    }
}

然后在你的视图模型中:

private YourBusinessClass instance = new YourBusinessClass();

public YourBusinessClass Instance 
{
    get { return instance; }
    set { instance = value; NotifyPropertyChanged("Instance"); }
}

附加处理程序:

instance.OnFieldUpdate += OnBusinessClassFieldUpdate;

...

public void OnBusinessClassFieldUpdate(int value)
{
    Instance = value;
}

现在,只要业务类中的字段更新,视图模型(以及数据绑定的UI控件)将通过delegate自动更新。