按钮单击和命令优先顺序

nik*_*hil 5 wpf prism mvvm

<Button Height="40" Width="40" x:Name="btnup" Command="{Binding UpCommand}" CommandParameter="{Binding ElementName=dgEntities,Path=SelectedItem}" Click="Btnup_OnClick">
Run Code Online (Sandbox Code Playgroud)

这段代码发生的事情是,在OnClick之后执行Command.是否可以先执行Command然后再执行OnClick.请帮忙....

Bra*_*NET 8

不,WPF OnClick在调用Execute绑定命令之前进行评估.

取决于点击处理程序的功能; 您可以从中调用它Execute,或者将事件提升回视图模型,然后将事件引发回视图,然后视图执行代码.

就像是:

代码隐藏:

  public SomeViewClass
  {
     public SomeViewClass()
     {
         InitializeComponent();

         SomeViewModel viewModel = new SomeViewModel;
         DataContext = viewModel;
         viewModel.SomeCommandCompleted += MoveUp;
     }

     private void MoveUp()
     {
         ...
     }
  }
Run Code Online (Sandbox Code Playgroud)

查看模型

public class SomeViewModel
{
    public event Action SomeCommandCompleted;
    public ICommand SomeCommand {get; private set;}

    public SomeViewModel()
    {
        SomeCommand = new DelegateCommand((o) => 
        {
            ...
            if (SomeCommandCompleted != null)
                SomeCommandCompleted();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)