web-dev-qa-db-ja.com

MVVM Light:BlendなしでXAMLにEventToCommandを追加、簡単な方法、またはスニペット?

誰でもEventToCommandクラスの実際の構文を教えてください。私が信じているのは、EventToCommandクラスがSilverlight/WPFおよびWP7で動作するということです。したがって、ダウンする方が良い選択だと思います。

私が信じていることから、クリックイベントを追加してViewModelに強制することができますが、これを行う最適な方法を見つけるのに問題があります。

Blendなしで追加できることは知っていますが、スニペットはありますか?

または、VS 2010経由で追加する簡単な方法はありますか?任意のヘルプまたはこれについての良いチュートリアルを知っている人は素晴らしいでしょう。

35
Martin

.NetFramework4を使用するとします:

最初にnamespaceを追加します:

xmlns:cmd="clr-namespace:GalaSoft.MvvmLight.Command;Assembly=GalaSoft.MvvmLight.Platform"

Loadedイベントの構文。

<i:Interaction.Triggers>
    <i:EventTrigger EventName="Loaded">
        <cmd:EventToCommand Command="{Binding Mode=OneWay, Path=LoadedCommand}"
                            PassEventArgsToCommand="True" />
    </i:EventTrigger>
</i:Interaction.Triggers>
73
Derek Beattie

プロジェクトを更新しましたが、コマンドが次の場所に移動したようです。

xmlns:cmd="clr-namespace:GalaSoft.MvvmLight.Command;Assembly=GalaSoft.MvvmLight.Platform"
4
Michael Shaffer

0)WPFとMVVMがわからない場合は、WPFとMVVMパターンに関するJosh Smithの記事を読んでください https://msdn.Microsoft.com/en-us/magazine/dd419663.aspx

1)プロジェクトで(NuGetを介して)MvvmLightLibsパッケージを追加します

2)System.Windows.Interactivityへの参照を追加します

3)[表示] XAMLに以下を追加します。

a)

xmlns:i="clr-namespace:System.Windows.Interactivity;Assembly=System.Windows.Interactivity"
xmlns:command="http://www.galasoft.ch/mvvmlight"

b)

<i:Interaction.Triggers>
    <i:EventTrigger EventName="Closing">
      <command:EventToCommand Command="{Binding OnClosingCommand}"/>
    </i:EventTrigger>
  </i:Interaction.Triggers>
</Window>

4)ViewModelで必要なプロパティを追加します

public ICommand OnClosingCommand
{
  get
  {
    return new RelayCommand(() => SomeMethod());
  }
}

追伸ビューでDataContext(XAML)を指定する必要があります

  <Window.DataContext>
    <vm:MainWindowViewModel/>
  </Window.DataContext>

仕事です。私自身は学んだばかりです。

3
Stepan Ivanenko