wpf中mvvm的Command绑定后,如何在点击按钮的时候在viewmodel里面异步执行方法。

当点击按钮后,按钮立刻变成enable=false,按钮的方法执行完后enable=true

第1个回答  2013-02-20
主要是你手动触发事件就行了!~ 改变 CanExecute的返回值,再手动触发 CanExecuteChanged 事件就OK啦!
public class AAACommand : ICommand
{
private bool _isRun;
public bool CanExecute(object parameter)
{
return !_isRun;
}
public event EventHandler CanExecuteChanged;
public void Execute(object parameter)
{
_isRun = true;
if (CanExecuteChanged == null)
{
CanExecuteChanged(this, new EventArgs());
}
// 你的代码
_isRun = false;
if (CanExecuteChanged == null)
{
CanExecuteChanged(this, new EventArgs());
}
}
}本回答被提问者采纳

wpf 在MVVM模式下怎样在Viewmodel里面获得view的控件对象。
比如你在VM定义一个command,然后在view层使用了这个command,那么这个command的parameter就可以指向view层里的控件啊。控件作为parameter传进VM层的command里做逻辑处理。

WPF中的命令(Command)
在View中,通过Binding将ViewModel中的命令对象与Button的Command属性进行绑定,从而实现命令的执行。命令参数CommandParameter:命令参数可以接收自定义的数据,在执行命令时传入,从而实现多样化的执行逻辑。这里以两个按钮为例,修改ViewModel代码,通过设置CommandParameter属性来传递参数。在MyCommand的执行逻辑中,...

MVVM中的WPF ICommand
传递参数至CanExecute和Execute方法是通过CommandParameter属性实现的,例如,点击按钮时,选定的地址值会被传递给Execute方法。CommandParameter在事件中传递给CanExecute和Execute事件处理程序。CanExecuteChanged事件通知所有绑定到ICommand的命令源,如Button或CheckBox,执行能力的变更。视图模型和用户界面需要密切关注这...

WPF 在MVVM模式下怎样在Viewmodel里面控件与view中控件相关联。
在Viewmodel定义PasswordBox的需要获得的属性,如Text,然后在view中应用绑定就可以了。

WPF-20 ICommand命令绑定
例如,当输入框为空时,提交按钮应被禁用,否则启用,点击后执行业务逻辑并将结果显示在页面上。具体实现时,我们可以通过创建DelegateCommand,实现ICommand接口,来管理命令行为。在SampleViewModel中,我们通过实现INotifyPropertyChanged来追踪视图模型的更改。在XAML页面上,我们使用控件的Command属性绑定到我们的...

WPF\/C#:理解与实现WPF中的MVVM模式
MVVM (Model-View-ViewModel) is a design pattern particularly suited for XAML-based applications, like WPF. It consists of three main components: Model, View, and ViewModel, which help separate concerns and improve maintainability.Without MVVM, in event-driven WinForms, user interaction ...

如何在ViewModel中访问View中的控件
首先,IsEnabled属性是个可以绑定的属性,你写一个bool的属性在ViewModel里,View绑定这个属性,就可以操作它们的IsEnabled了,又不是只有Text属性才可以绑定。对于MVVM,很多时候需要加载Blend的几个库,实现几个Behavior和TriggerAction,把一些不能直接操作的和View交互的东西都封装在这里。

WPF进阶之MVVM教程(一)
以一个简单的加法计算器为例,我们将创建一个NotifyBase基类,继承INotifyPropertyChanged接口,用于数据变化通知。同时,定义一个CommandBase类,用于封装命令。在MainWindowViewModel中,我们定义Input1、Input2和Result属性,并创建AddCommand,关联一个执行方法Add。通过这些基础设置,我们就为MVVM的实现打下了...

wpf MVVM Viewmodel之间传值
有个比较简单的方法,把Viewmode都设置成单例,然后在1的view里边定义2的对象,这个对象和2自己本身用的对象是在一个内存空间的,就可以随便传值各种操作了。

请教WPF高手关于MVVM模式里面INotifyPropertyChanged的问题。
只要Model实现这个接口就可以了。我写了个demo view层:(datacontext绑定到vm层)<StackPanel Orientation="Horizontal"> <TextBox Width="100" Height="23" DataContext="{Binding Person1}" Text="{Binding PName}"\/> <Button Margin="20 0 " VerticalAlignment="Center" Content="click" Command...

相似回答