【问题标题】:C# WPF Treeview ItemContainerStyle makes mouseclick event sender lose TreeviewItem referenceC# WPF Treeview ItemContainerStyle 使 mouseclick 事件发送者丢失 TreeviewItem 引用
【发布时间】:2018-05-15 14:35:32
【问题描述】:

我有这个有效的代码,

    private void TreeSetup_MouseRightButtonDown(object sender, MouseButtonEventArgs e)
    {
        if (sender is TreeViewItem)
        {
            ((TreeViewItem)sender).IsSelected = true;
        }
        e.Handled = true;
    }

    private void TreeSetup_MouseRightButtonUp(object sender, MouseButtonEventArgs e)
    {
            ContextMenu PopupMenu = this.FindResource("cmButton") as ContextMenu;
            if (TreeSetup.SelectedItem != null)
            {
                PopupMenu.PlacementTarget = sender as TreeViewItem;
                PopupMenu.IsOpen = true;
        }
    }

但是一旦我添加了这个 ItemContainerStyle,

 <TreeView.ItemContainerStyle>
                        <Style TargetType="{x:Type TreeViewItem}">
                            <Setter Property="IsSelected" Value="{Binding Path=IsSelected, Mode=TwoWay}" />
                            <Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}"/>
                            <Style.Triggers>
                                <Trigger Property="IsSelected" Value="True">
                                    <Setter Property="FontWeight" Value="Bold" />
                                </Trigger>
                            </Style.Triggers>
                        </Style>
                    </TreeView.ItemContainerStyle>

鼠标按下事件的发送者变为 TreeView 而不是 TreeViewItem。 有谁知道原因并解决这个问题?

【问题讨论】:

  • 你是如何在 XAML 中为 TreeViewItem 绑定 TreeSetup_MouseRightButtonDownTreeSetup_MouseRightButtonUp 的?
  • 我的按钮向下,作为树视图资源:
  • 和 mouseButtonUp 在树视图的行:

标签: c# wpf treeview


【解决方案1】:

我在ItemContainerStyle下绑定了mousedown事件:

 <TreeView.ItemContainerStyle>
                        <Style TargetType="TreeViewItem">
                            <EventSetter Event="MouseRightButtonDown" Handler="TreeSetup_MouseRightButtonDown"/>
                            <Setter Property="IsSelected" Value="{Binding Path=IsSelected, Mode=TwoWay}" />
                            <Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}"/>
                            <Style.Triggers>
                                <Trigger Property="IsSelected" Value="True">
                                    <Setter Property="FontWeight" Value="Bold" />
                                </Trigger>
                            </Style.Triggers>
                        </Style>
                    </TreeView.ItemContainerStyle>

【讨论】:

    猜你喜欢
    • 2023-03-30
    • 2021-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-23
    • 1970-01-01
    相关资源
    最近更新 更多