Как передать объект текущего узла в команду в telerik RadtreeviewItem в wpf
Я использую элемент управления Kendo Telerik RadTreeview в WPF. У меня есть функциональность, которая для каждого узла RadTreeViewItem я добавляю пользовательскую кнопку, которая появляется при отображении события команды.
Я добавил кнопку и использовал ее в HierarchicalDataTemplate
как показано ниже
<HierarchicalDataTemplate x:Key="BuildingStructure"
ItemsSource="{Binding Levels, Mode=TwoWay}"
ItemContainerStyle="{StaticResource levelNodeStyle}">
<Grid HorizontalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="3*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0"
Width="250"
Text="{Binding StructureName , Mode=TwoWay}"
HorizontalAlignment="Left"
Panel.ZIndex="2"/>
<Button
Canvas.Left="10"
Canvas.Bottom="20"
Panel.ZIndex="1"
BorderThickness="0"
BorderBrush="Transparent"
Background="Transparent"
Foreground="White"
HorizontalAlignment="Left"
Grid.Column="1"
VerticalAlignment="Stretch"
Command="{Binding DataContext.AddLevelRadTreeCommand, RelativeSource={RelativeSource AncestorType=telerik:RadTreeView}}"
CommandParameter="{Binding ElementName=radTreeView}"
Margin="0 2 0 5">
<Image
Width="20"
Height="20"
Source="/Project;component/Resources/Images/03-Add.png"/>
</Button>
</Grid>
</HierarchicalDataTemplate>
То, что я хочу, это то, что при командном событии мне нужно добавить параметр команды, который будет передавать текущий RadTreeviewItem
объект данных, который назначается этому узлу, как показано ниже
StructId:1,
StructName:'Building A'....and so on...
1 ответ
Когда вы формируете данные в элементы управления, текст данных элемента управления становится моделью представления, которую вы создаете. Все, что есть в уровнях, становится текстовым текстом созданного предмета.
DataContext наследуется по визуальному дереву.
Следовательно, текст данных кнопки является элементом дерева.
Где у вас есть
CommandParameter="{Binding ElementName=radTreeView}"
Вы хотите, чтобы текст данных содержал кнопку. Что должно быть что-то вроде:
CommandParameter="{Binding DataContext, RelativeSource={RelativeSource Self}}"
Думая об этом немного больше, это также может быть
CommandParameter="{Binding}"