wpf - 按钮 isEnabled = true 在没有鼠标单击的情况下不起作用 WPF MVVM

标签 wpf user-interface mvvm

我有基于 MVVM 模式的 wpf 应用程序。 我遇到了烦人的问题,我不知道该如何解决。

我的应用程序是向导应用程序,当用户按下“Next”时,我在另一个线程(backgroundworker)中开始一些进展,当 bgWorker 启动时,他设置绑定(bind)到 Next 按钮的 CanMoveNext = false isEnabled 属性,当 bgworker 完成时,他设置回 CanMoveNext = true;

CanMoveNext 获得 IsEnabled = false 时,UI 会立即显示它,但在 isEnabled 属性设置回 true 后,UI 会在单击鼠标或键盘键后立即刷新按。

在我使用 OnPropertyChanged() 方法更改我的属性后,我什至尝试使用 CommandManager.InvalidateRequerySuggested(); 但它没有鼠标点击仍然无法刷新。

我该如何解决这个问题?

这是我的代码:

       public override bool CanMoveNext
        {
            get
            {
                return canMoveNext;
            }
            set
            {
                canMoveNext = value;
                OnPropertyChanged("CanMoveNext");
            }
        }



    public void StartProgress()
            {

                CanMoveNext = false;
                InitBGworkers(out bgStartPersonalWorker);
    bgStartPersonalWorker.RunWorkerAsync();
    }



        void bgStartPersonalWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            DoStuff();
        }



        void bgStartPersonalWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
                {
     CanMoveNext = true;
//Even  CommandManager.InvalidateRequerySuggested(); doen`t help
                }

//来自 XAML 的代码

<Button Content="{Binding ButtonNextCaption}" IsEnabled="{Binding CanMoveNext, UpdateSourceTrigger=PropertyChanged}" Command="{Binding Path=NavigateNextCommand}" Margin="5,0,5,0" Width="100" Height="40" FontSize="14" FontWeight="Bold"/>

谢谢

最佳答案

我想知道如何解决它:

            Application.Current.Dispatcher.BeginInvoke(new ThreadStart(() =>
            {
                CommandManager.InvalidateRequerySuggested();

            }));

关于wpf - 按钮 isEnabled = true 在没有鼠标单击的情况下不起作用 WPF MVVM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13218977/

相关文章:

wpf - 设置视频流顶部的按钮[WPF]

wpf - WPF:在一个ViewModel上单击按钮应在另一个ViewModel上执行命令

user-interface - 触摸屏系统指南

c# - 将一个按钮绑定(bind)到 3 个不同的 DataGrids,每个 DataGrids 在 TabControl 中

c# - 如何将更改从模型获取到模型 View 中?

wpf - 如何在控件内引用用户控件主机的 StaticResource?

wpf - DrawingContext.DrawLine性能问题

wpf - 通过 Entity Framework 将用户插入数据库不起作用

jQuery slideDown + CSS float

java - 在 Java 应用程序中使用 CSS