如何使用自定义按钮在wpf telerik RadTreeviewItem中添加命令事件并传递当前节点数据

How to add command event and pass the current node data in wpf telerik RadTreeviewItem with custom button

我在 WPF 中使用 Kendo Telerik RadTreeView 控件。我有每个 RadTreeViewItem 的功能,我需要显示一个按钮,我可以这样做。

现在每个RadTreeViewItem旁边的按钮都会有event/command需要打开popwindow并传递当前节点数据

我已经尝试使用代码隐藏按钮单击事件并且它工作正常..但是根据要求我们应该只使用命令而不是代码隐藏事件。

这是我添加按钮的代码..

<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>

请查看图片以供参考:

提前致谢...!!

Button 有一个 Command 属性 所以没有理由使用 EventTriggerInvokeCommandAction 来处理 MouseLeftButtonDown 事件。

如果在视图模型中定义了 TestRadTreeCommand,即 TreeViewDataContext,您可以像这样绑定它:

<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>