galasoft mvvm-light フレームワークを wpf treeviev コントロールで動作させようとしましたが、対応するビューモデルでコマンド メソッドが呼び出されません。
ビューモデル:
public class TreeViewViewModel : WorkspaceViewModel
{
private List<TreeItemViewModel> _items;
public List<TreeItemViewModel> Items { get { return _items; } set { _items = value; } }
public RelayCommand<RoutedPropertyChangedEventArgs<object>> SelectedItemChangedCommand { get; private set; }
public RelayCommand<EventArgs> MouseDoubleClickCommand { get; private set; }
public TreeViewViewModel()
{
SelectedItemChangedCommand = new RelayCommand<RoutedPropertyChangedEventArgs<object>>(e => OnSelectedItemChanged(e));
}
void OnSelectedItemChanged(RoutedPropertyChangedEventArgs<object> e)
{
var xy = e;
}
}
意見:
<TreeView ItemsSource="{Binding Items}" Grid.Row="1" x:Name="trvTemplate">
<TreeView.ItemContainerStyle>
<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.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Children}">
<TextBlock Text="{Binding Text}" />
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectedItemChanged">
<cmd:EventToCommand Command="{Binding SelectedItemChangedCommand, Mode=OneWay}" PassEventArgsToCommand="True" />
</i:EventTrigger>
<i:EventTrigger EventName="MouseLeftButtonDown">
<cmd:EventToCommand Command="{Binding MouseDoubleClickCommand}" PassEventArgsToCommand="True" />
</i:EventTrigger>
</i:Interaction.Triggers>
</TreeView>
私はいくつかのブログを読んだことがありますが、うまくいくはずですが、コマンドが呼び出されていません。wpfツリービューとmvvmパターンを組み合わせるより良い方法または簡単な方法がある場合は、関連情報を教えてください。