Как передать текущий объект узла в команду в телерике 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...

Вы имеете в виду контекст данных элемента дерева? Привязка datacontext относительного источника к себе

Andy 22.05.2019 12:20

@Andy, я новичок в wpf, а также в телерике для wpf .. могу ли я узнать, как мы можем передать текущий элемент в параметр Command

SwapNeil 22.05.2019 12:29

@Энди, могу я узнать, как мы можем передать параметр

SwapNeil 22.05.2019 13:50
3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
0
3
141
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Когда вы шаблонируете данные в элементах управления, datacontext элемента управления становится моделью представления, которую вы создаете в качестве шаблона. Каждый элемент Levels становится контекстом данных создаваемого элемента treewview.

DataContext наследуется вниз по визуальному дереву.

Следовательно, контекст данных кнопки - это элемент дерева.

Где у вас есть

 CommandParameter="{Binding ElementName=radTreeView}"

Вам нужен контекст данных, в котором находится кнопка. Это должно выглядеть примерно так:

CommandParameter="{Binding DataContext, RelativeSource={RelativeSource Self}}"

Подумав об этом немного больше, это также может быть

CommandParameter="{Binding}"

Спасибо... и CommandParameter="{Binding DataContext, RelativeSource={RelativeSource Self}}", и CommandParameter="{Binding}" дали мне желаемый результат

SwapNeil 22.05.2019 15:51

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