【发布时间】:2013-01-23 12:04:24
【问题描述】:
我有一个 WPF 应用程序,它显示了一个绑定到类似命令的按钮:
<Button Command="{Binding Path=TestrunStartCommand}" Content="GO!">
命令是这样定义的:
public ICommand TestrunStartCommand
{
get { return new RelayCommand(TestrunStartExecute, () => !IsTestrunInProgress); }
}
public bool IsTestrunInProgress
{
get{
return _isTestrunInProgress;
}
set{
_isTestrunInProgress = value;
RaisePropertyChanged(IsTestrunInProgressPropertyName);
}
}
问题是,在我将IsTestrunInProgress 设置为false 后,按钮不会立即启用,而是只有在我在应用程序窗口内单击后才能启用。
您能帮我理解这种行为并告诉我如何解决这个问题吗?
【问题讨论】:
-
only after I click inside the application window;您是否暗示操作系统中当前活动的窗口是不是此程序窗口?或者换句话说,此应用程序已启动并正在运行,但您在记事本中,您只能在后台看到窗口。 -
@MichaelPerrenoud:不,应用程序窗口处于活动状态并具有焦点。似乎只有在我在窗口内单击时才会评估
CanExecuteChanged。 -
Galasoft 库中的 RelayCommand 有效地工作
-
@HichemC 我确信它可以有效地工作,错误肯定在我(初学者)方面。但我的错误在哪里?
标签: c# wpf mvvm-light