Как добавить событие команды и передать данные текущего узла в wpf telerik RadTreeviewItem с помощью пользовательской кнопки - PullRequest
0 голосов
/ 17 мая 2019

Я использую Kendo Telerik RadTreeView элемент управления в WPF .. У меня есть функциональность, для каждого RadTreeViewItem мне нужно показать кнопку, которую я могу сделать.

Теперь кнопка следующаядля каждого RadTreeViewItem будет иметь событие / команду, которая должна открыть всплывающее окно и передать данные текущего узла.

Я пробовал с кодом позади события нажатия кнопки, и он работает нормально .. но согласно требованию мыследует использовать только команду, а не код позади событий.

Вот код, куда я добавляю кнопку ..

<HierarchicalDataTemplate x:Key="BuildingStructure"
                              ItemsSource="{Binding StructureLevels}"
                              ItemContainerStyle="{StaticResource levelNodeStyle}">

        <Grid HorizontalAlignment="Stretch">
            <Grid.ColumnDefinitions>
                <ColumnDefinition  Width="3*"/>
                <ColumnDefinition  Width="*"/>
            </Grid.ColumnDefinitions>
            <TextBlock Grid.Column="0" 
                       Width="250"
                       Text="{Binding Name}" 
                       HorizontalAlignment="Left"/>
            <Button
                Panel.ZIndex="100"
                BorderThickness="0"
                BorderBrush="Transparent"
                Background="Black"
                Grid.Column="1"
                VerticalAlignment="Stretch"
                Margin="0 2 0 5">
                <Image
                    Width="20"
                    Height="20"
                   Source="/Project;component/Resources/Images/03-Add.png"/>

                <i:Interaction.Triggers>
                    <i:EventTrigger EventName="MouseLeftButtonDown">
                        <i:InvokeCommandAction Command="{Binding TestRadTreeCommand}"/>
                    </i:EventTrigger>
                </i:Interaction.Triggers>

            </Button>
        </Grid>
    </HierarchicalDataTemplate>

Пожалуйста, проверьте изображение для вашей справки:

enter image description here

Заранее спасибо ... !!

1 Ответ

0 голосов
/ 20 мая 2019

Button имеет свойство Command, поэтому нет необходимости использовать EventTrigger и InvokeCommandAction для обработки события MouseLeftButtonDown.

Если в модели представления определено TestRadTreeCommand, то есть DataContext из TreeView, вы можете привязать его к этому так:

<Button
    Panel.ZIndex="100"
    BorderThickness="0"
    BorderBrush="Transparent"
    Background="Black"
    Grid.Column="1"
    VerticalAlignment="Stretch"
    Margin="0 2 0 5"
    Command="{Binding DataContext.TestRadTreeCommand, RelativeSource={RelativeSource AncestorType=TreeView}}">
    <Image Width="20"
           Height="20"
           Source="/CCRIS;component/Resources/Images/03-Add.png"/>
</Button>
...