ダイアログ タイプのウィンドウの 2 つのコントロールに同じコマンドを使用したいと考えています。潜在的に興味深い背景として、私は Josh Smith の ViewModel / RelayCommand のアイデアを使用しています。これは、私が WPF を初めて使用し、全体像の観点から実際に理解できるのを初めて見たからです。
したがって、コマンドは ViewModel のプロパティであり、Button の組み込みサポートにより、XAML でコマンドにバインドするのは簡単で簡単です。
<Button ... Command="{Binding Path=PickCommand}" Content="_Ok"></Button>
ListView では、ダブルクリックでトリガーするように接続された同じコマンドを使用する唯一の方法は、イベント ハンドラーを使用することです。
<ListView ...
ItemsSource="{Binding Path=AvailableProjects}"
SelectedItem="{Binding Path=SelectedProject, Mode=TwoWay}"
MouseDoubleClick="OnProjectListingMouseDoubleClick"
>
private void OnProjectListingMouseDoubleClick(object sender, MouseButtonEventArgs e) {
var vm = (ProjectSelectionViewModel) DataContext;
vm.Pick(); // execute the pick command
}
ボタンの方法をバインドすることでこれを行う方法はありますか?
乾杯、
ベリル
<------ 実装 - より良い方法はありますか? --->
あなたの SelectionBehavior クラスは適切でしたが、xaml コードで混乱しました。listViewItem に「スタイル」を設定することで、実行したいコマンドが存在する DataContext の子を取得していました。そのため、ListView 自体に動作を追加しました。
<ListView ...Style="{StaticResource _attachedPickCommand}" >
そして、スタイルをリソース ディクショナリに入れます。
<Style x:Key="_attachedPickCommand" TargetType="ListView">
<Setter Property="behaviors:SelectionBehavior.DoubleClickCommand" Value="{Binding Path=PickCommand}" />
</Style>
できます!しかし、リストビューのスタイルプロパティを設定するのは「気まずい」です。これは、wpfで視覚的なもの以上のスタイルに慣れていないためですか、それともこれを行うためのより良い方法がありますか?
乾杯、そしてありがとう!
ベリル