0

我在我的 WPF 应用程序中使用 Telerik radgridview

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

现在我的问题是当我双击 radtreelistview 中的 ANYWHERE(甚至在滚动条中)时,MouseDoubleClick 事件就会触发,我只想在双击选定的项目或行时触发它。我想知道我是否可以在所选项目或每一行中附加 MouseDoubleClick,但我没有找到方法来做到这一点。有什么建议吗?

4

1 回答 1

0

在您的示例中,您确实将事件附加到了网格本身。

实际上,您需要在 Row 上附加事件!

你可以用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;
}

请享用 :)

于 2013-06-05T08:59:01.090 回答