Как привязать команду к событию SelectedItemChanged TreeView

Существует TreeView Control.

 <TreeView Name="ProductsHierarchy" FontFamily="Arial"  
                          Background="White" Margin="2" 
                          FontSize="12" SelectedItemChanged ="ProductsHierarchy_SelectedItemChanged">

Есть ли способ связать команду для события SelectedItemChanged в древовидной структуре, избегая кода позади обработчика событий?

1 ответ

Решение

Попробуйте EventToCommand MVVM Toolkit.

"Встроенный" (из Blend) подход заключается в использовании интерактивности

<TreeView Name="ProductsHierarchy" FontFamily="Arial"  
                          Background="White" Margin="2" 
                          FontSize="12" SelectedItemChanged ="ProductsHierarchy_SelectedItemChanged">
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="SelectedItemChanged">
            <i:InvokeCommandAction Command="{Binding SelectedItemChangedCommand}" CommandParameter="argument"/>
        </i:EventTrigger>
    </i:Interaction.Triggers>
</TreeView>

Вы должны включить пространство имен:

xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"

Недостатком здесь является то, что у вас нет доступа к EventArgs, Вот решение (это на польском языке, но примеры кода в значительной степени говорят сами за себя).

Другие вопросы по тегам