C # WPF Treeview ItemContainerStyle заставляет отправителя события щелчка мышью терять ссылку на TreeviewItem - PullRequest
0 голосов
/ 15 мая 2018

У меня есть этот код, который работает,

    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. Кто-нибудь знает причину и исправить это?

1 Ответ

0 голосов
/ 15 мая 2018

Я связал событие mousedown с ItemContainerStyle:

 <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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...