如何使用自定义按钮在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
属性 所以没有理由使用 EventTrigger
和 InvokeCommandAction
来处理 MouseLeftButtonDown
事件。
如果在视图模型中定义了 TestRadTreeCommand
,即 TreeView
的 DataContext
,您可以像这样绑定它:
<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>
我在 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
属性 所以没有理由使用 EventTrigger
和 InvokeCommandAction
来处理 MouseLeftButtonDown
事件。
如果在视图模型中定义了 TestRadTreeCommand
,即 TreeView
的 DataContext
,您可以像这样绑定它:
<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>