Telerik RadTreeListView: прикрепление события в строках
Я использую Telerik Radgridview в моем приложении WPF
<telerik:RadTreeListView Grid.Row="1" Grid.ColumnSpan="2"
Name="WorkPreferenceTreeView"
AutoGenerateColumns="false"
IsReadOnly="True"
ItemsSource="{Binding ItemsSource, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Views:WorkPreferenceSelectorView}}}"
RowIndicatorVisibility="Collapsed"
SelectedItem="{Binding SelectedItem, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Views:WorkPreferenceSelectorView}}}"
ScrollViewer.HorizontalScrollBarVisibility="Hidden">
<TelerikNavigation:RadContextMenu.ContextMenu>
<TelerikNavigation:RadContextMenu x:Name="RadContextMenu" />
</TelerikNavigation:RadContextMenu.ContextMenu>
<telerik:RadTreeListView.ChildTableDefinitions>
<telerik:TreeListViewTableDefinition ItemsSource="{Binding ItemPreferences}" />
</telerik:RadTreeListView.ChildTableDefinitions>
<telerik:RadTreeListView.Columns>
<telerik:GridViewDataColumn MinWidth="200" Width="*" CellTemplate="
{StaticResource ItemPreferenceskPreferenceCellTemplate}" Header="Preference" IsFilterable="false"
ShowFieldFilters="false" Name="A" />
И я прикрепляю событие на элемент управления
private void InitializeControl()
{
WorkPreferenceTreeView.MouseDoubleClick += (WorkPreferenceTreeView_MouseDoubleClick);
}
Теперь моя проблема заключается в том, что событие MouseDoubleClick срабатывает всякий раз, когда я дважды щелкаю ЛЮБОЙ в любом месте в обзоре radtreelist (даже в полосе прокрутки), где я просто хочу, чтобы оно срабатывало при двойном щелчке по выбранному элементу или строке. Мне интересно, могу ли я просто прикрепить MouseDoubleClick даже к выбранному элементу или каждой строке, но мне не повезло найти способ сделать это. Любое предложение?
1 ответ
В вашем примере вы прикрепили событие к самой сетке.
на самом деле вам нужно прикрепить событие на строке!
Вы можете сделать это с RowStyle
(в этом примере двойной щелчок переключит свойство строки IsExpanded)
<telerik:RadTreeListView ... >
<telerik:RadTreeListView.RowStyle>
<Style TargetType="telerik:TreeListViewRow">
<EventSetter
Event="MouseDoubleClick"
Handler="HandleRowDoubleClick" />
</Style>
</telerik:RadTreeListView.RowStyle>
</telerik:RadTreeListView>
и код позади
public void HandleRowDoubleClick(object sender, RoutedEventArgs e)
{
var row = sender as Telerik.Windows.Controls.GridView.GridViewRow;
row.IsExpanded = !row.IsExpanded;
}
наслаждаться:)