1

別のコントロール テンプレート内にあり、MVVM ライト リレー コマンドを使用しているコントロール テンプレートでイベントをトリガーする際に問題があります。

これがケースです: main_control は generic.xaml スタイルでテンプレート化されています。sub_control も同様にテンプレート化されています。

main_control には ObservableCollection に複数の sub_control インスタンスがあります

現在、MVVM Light で実装されている私の SL プロジェクトには、xaml に main_control を含むビューがあります。このビューは、sub_control で埋めるビューモデルにバインドされています。

私が達成しようとしているのは、クリックされた sub_control のインスタンスをビューモデルに戻すことです。

ご協力いただきありがとうございます。

4

1 に答える 1

0

次の事項が正しいことを確認します。

サブコントロールの DataContext を表すオブジェクトのプロパティとして RelayCommand を公開します。これは ViewModel かもしれませんが、多くの場合、コレクションにバインドしているエンティティ クラスのインスタンスです。必ず公開し、get メソッドと set メソッドを提供してください。

  public RelayCommand MyCommand { get; set; }

コマンドが新しいインスタンスに設定されていることを確認してください

  MyCommand = new RelayCommand(() =>
  {
     // Do something
  });

最後に、ビューにバインディングを設定します

  xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
  xmlns:command="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Extras.SL4"
  ...
  <Button Content="Click Me">
    <i:Interaction.Triggers>
      <i:EventTrigger EventName="Click">
        <command:EventToCommand Command="{Binding MyCommand}"/>
      </i:EventTrigger>
    </i:Interaction.Triggers>
  </Button>
于 2011-10-27T16:04:26.227 に答える