【发布时间】:2015-09-09 13:15:57
【问题描述】:
我有一个搜索对话框,我想在搜索过程中禁用搜索按钮。这是当前代码,但按钮没有被停用
查看:
<Button Content="Search"
Command="{Binding StartSearchCommand}"
IsEnabled="{Binding IsNotSearching}" />
视图模型:
private bool _isNotSearching;
public bool IsNotSearching
{
get { return _isNotSearching; }
set
{
_isNotSearching = value;
OnPropertyChanged("IsNotSearching");
}
}
private RelayCommand<object> _startSearchCommand;
public ICommand StartSearchCommand
{
get
{
if (_startSearchCommand == null)
_startSearchCommand = new RelayCommand<object>(p => ExecuteSearch());
return _startSearchCommand;
}
}
private void ExecuteSearch()
{
IsNotSearching = false;
//do some searching here
IsNotSearching = true;
}
【问题讨论】:
-
那是因为你通过执行 Thread.Sleep 阻塞了 UI 线程。如果您要在后台线程中执行某些任务,那么一切都应该按您的预期工作
-
试过了。让它有事可做。但是该按钮在执行时看起来被点击了并且没有被停用
-
它正在发生,但速度如此之快,你看不到它。 ExecuteSearch() 在完成之前不会更新 UI,因此 IsNotSearching = false 和 IsNotSearching = true 同时发生。
-
@Frisbee:我计算了一些需要很长时间的东西。我可以看到它被点击了,它完成了
-
@juergend 所以你可以看到它被点击了。这证明了什么?