私は標準のWPFツリービューを持ち、モデルクラスを表示するための項目をバインドしています。WPFでは、MVVMはViewModelをウィンドウのオープンに関与させるべきです。 About-ウィンドウ?
これで、アイテムをダブルクリックしたときのビヘイビア(ビジュアルスタジオスタイルのドキュメントを開く)を処理したいと考えています。
ツリービュー(xamlが表示されます)を含むコントロールでイベントハンドラを起動できますが、ビューモデルクラスの特定の動作にバインドするにはどうすればいいですか? ProjectViewModel?
これは他の場所で使用されているとして、ICommandの-実装にバインド好ましい...任意のコメント
おかげで、
アンダース、デンマーク
<TreeView ItemsSource="{Binding Projects}" MouseDoubleClick="TreeView_MouseDoubleClick">
<TreeView.ItemContainerStyle>
<!--
This Style binds a TreeViewItem to a TreeViewItemViewModel.
-->
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
<Setter Property="FontWeight" Value="Normal" />
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="FontWeight" Value="Bold" />
</Trigger>
</Style.Triggers>
</Style>
</TreeView.ItemContainerStyle>
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type Implementations:ProjectViewModel}" ItemsSource="{Binding Children}">
<StackPanel Orientation="Horizontal">
<Image Width="16" Height="16" Margin="3,0" Source="Images\Region.png" />
<TextBlock Text="{Binding DisplayName}" />
</StackPanel>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type Implementations:PumpViewModel}" ItemsSource="{Binding Children}">
<StackPanel Orientation="Horizontal">
<Image Width="16" Height="16" Margin="3,0" Source="Images\State.png" />
<TextBlock Text="{Binding Name}" />
</StackPanel>
</HierarchicalDataTemplate>
<DataTemplate DataType="{x:Type Implementations:PumpDesignViewModel}">
<StackPanel Orientation="Horizontal">
<Image Width="16" Height="16" Margin="3,0" Source="Images\City.png" />
<TextBlock Text="{Binding Name}" />
</StackPanel>
</DataTemplate>
</TreeView.Resources>
</TreeView>
申し訳ありません - 2つの質問が混在しています。 –
'body'の質問について: 私は、表示、遅延ロードなどに関して個々のツリーアイテムを扱うviewmodelオブジェクトを持っています。 しかし、ツリービュー内の項目を「アクティブ化」/ダブルクリックしたいときは、私は、このアクションをディスプレイを扱う同じビューモデルオブジェクトで処理することを希望しますが、どうすればよいですか? –
タイトルの質問に答えたので、これを回答としてマークしました。 'body'の質問はこちら[こちら](http://stackoverflow.com/questions/4497825/wpf-mvvm-how-to-handle-double-click-on-treeviewitems-in-the-viewmodel)に転載されています。申し訳ありませんがinconveneince(ハード単語;-)) –