弹出窗口打开后的Wpf,MouseEnter,MouseLeave事件

时间:2017-12-31 03:45:33

标签: wpf

我的WPF应用程序具有少量TabItem的TabControl。 TabItems具有样式触发器,用于在选择MouseOver或TabItem时更改背景。

               <ControlTemplate.Triggers>
                    <Trigger Property="IsSelected" Value="true">
                        <Setter Property="Panel.ZIndex" Value="1" />
                        <Setter Property="Background">
                            <Setter.Value>
                                <ImageBrush ImageSource="/Resources/tab-active-new.png"/>
                            </Setter.Value>
                        </Setter>
                    </Trigger>
                    <Trigger Property="IsSelected" Value="false">
                        <Setter Property="Width" Value="130" />
                        <Setter Property="Background">
                            <Setter.Value>
                                <ImageBrush ImageSource="/Resources/tab-inactive-new.png"/>
                            </Setter.Value>
                        </Setter>
                    </Trigger>
                    <Trigger Property="IsMouseOver" Value="true">
                        <Setter Property="Background">
                            <Setter.Value>
                                <ImageBrush ImageSource="/Resources/tab-active-new.png"/>
                            </Setter.Value>
                        </Setter>
                    </Trigger>
                </ControlTemplate.Triggers>

其中一个TabItem在Header中有UserControl。如果是MouseEnter事件,它应该打开弹出窗口:

    private void OnShowBpPopupCommand(object obj)
    {
        var popup = this.bpPopup;
        popup.IsOpen = true;
    }

    private void BpPopup_OnClosed(object sender, EventArgs e)
    {
        System.Diagnostics.Debug.WriteLine("Popup closed...");
    }

有复制问题的步骤:

  1. 选择Tab1。 Tab2和Tab3应该是“无效的”#。
  2. 导航到Tab2,将鼠标移到绿色区域(UserControl)。
  3. 弹出窗口已打开。在TabControl外面左键单击以关闭弹出窗口。
  4. 存在一个问题:Tab2保持为“活动”状态,但根据样式,它应该是“不活动”:Tab2.IsMouseOver = false,Tab2.IsSelected = false。
  5. 要使其再次正常工作,用户应导航到Tab2灰色区域(不要导航到UserControl以避免打开弹出窗口)。由于某种原因,Tab2不会触发MouseEnter事件。
  6. 现在将鼠标移到Tab2之外。 Tab2.MouseLeave事件被触发。之后,该应用程序按预期工作。
  7. Step 1

    Step 2

    如何在弹出窗口关闭后(步骤3)强制Tab2根据样式刷新它的外观(将背景改为&#39;非活动&#39;)?

    我附加了一个小项目来演示这种行为: Small sample project 感谢。

0 个答案:

没有答案