wpf - telerik 忙指示器不可见

标签 wpf data-binding mvvm mvvm-light mvvm-toolkit

您好,我正在尝试将 telerik 忙指示器与 MVVM 结合使用。我在主窗口中有忙碌指示器。当窗口中的某个用户控件发生操作(单击按钮)时,用户控件 View 模型会向 MinwindowviewModel 发送一条消息。消息上应显示忙碌指示器。但这是行不通的。为什么这不起作用?

用户控制 View 模型

public class GetCustomerVM : ViewModelBase
{
    private int _CustomerId;
    public int CustomerId
    {
        get { return _CustomerId; }
        set
        {
            if (value != _CustomerId)
            {
                _CustomerId = value;
                RaisePropertyChanged("CustomerId");
            }
        }
    }

    public RelayCommand StartFetching { get; private set; }
    public GetCustomerVM()
    {
        StartFetching = new RelayCommand(OnStart);
    }

    private void OnStart()
    {
        Messenger.Default.Send(new Start());
        AccountDetails a = AccountRepository.GetAccountDetailsByID(CustomerId);
        Messenger.Default.Send(new Complete());
    }
}

用户控制 View 模型是:

    private bool _IsBusy;
    public bool IsBusy
    {
        get { return _IsBusy; }
        set
        {
            if (value != _IsBusy)
            {
                _IsBusy = value;
                RaisePropertyChanged("IsBusy");
            }
        }
    }
    public WRunEngineVM()
    {
        RegisterForMessages();
    }

    private void RegisterForMessages()
    {
        Messenger.Default.Register<Start>(this, OnStart);
        Messenger.Default.Register<Complete>(this, OnComplete);
    }

    private void OnComplete(Complete obj)
    {
        IsBusy = false;
    }

    private void OnStart(Start obj)
    {
        IsBusy = true;
    }

在主窗口 View 中,根元素是

<telerik:RadBusyIndicator IsBusy="{Binding IsBusy}" telerik:StyleManager.Theme="Windows7">

最佳答案

AccountDetails a = AccountRepository.GetAccountDetailsByID(CustomerId); 是什么意思?做?我的猜测是,无论发生什么,都在 UI 线程上运行。因为这一切都发生在 UI 线程上,所以 UI 永远没有机会刷新并显示 RadBusyIndicator 。尝试将所有工作移至 OnStartBackgroundWorker ,包括发送消息。您将在这里遇到问题,因为消息将从后台线程更新 UI 线程,因此您需要使用 Dispatcher设置IsBusytruefalse .

关于wpf - telerik 忙指示器不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8509517/

相关文章:

wpf - 如何防止 WPF 中的动画菜单?

javascript - Backbone : How To Bind A Model To A View

winforms - Windows 窗体单选按钮数据绑定(bind)

c# - MVVM 子模型和导航和啤酒

c# - 如何在不使用 INotifyPropertyChanged 的​​情况下更新 View 和 View 模型

c# - 如何查询正在运行的线程

c# - 查找事件文本框 WPF

c# - 背景属性不指向路径 '(0).(1)' 中的依赖对象

.net - WPF:验证时绑定(bind)到不可为空的值

c# - 创建 Window 时出现 BindingExpression 路径错误(尚未绑定(bind) VM)