0

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パターンを組み合わせるより良い方法または簡単な方法がある場合は、関連情報を教えてください。

4

0 に答える 0