简体   繁体   English

C#WPF Treeview ItemContainerStyle使mouseclick事件发送者丢失TreeviewItem参考

[英]C# WPF Treeview ItemContainerStyle makes mouseclick event sender lose TreeviewItem reference

I have this code that works, 我有这个代码可以工作,

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

But once I add this ItemContainerStyle, 但是一旦我添加了这个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>

My sender on the mouse down event becomes a TreeView instead of TreeViewItem. 我的鼠标按下事件发件人变为TreeView而不是TreeViewItem。 Does anyone know the cause and fix to this? 有谁知道原因并解决这个问题?

I binded the mousedown event under the ItemContainerStyle: 我在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>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM