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

наслаждаться:)

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