如何设置父级弹出窗口

时间:2018-01-25 09:55:05

标签: c# wpf popup

我想在点击用户图标时显示用户信息,例如=>

enter image description here

首先,我是wpf设计的新手,经过一些研究后,虽然我可以使用popup。所以我尝试使用popup。但问题是弹出框提供了一种在单独的窗口中显示内容的方法(MSDN)所以当我改变父窗口的大小或最小化父窗口时,它不是效果popupPopup展示位置始终有效。

所以请让我知道popup是我要求的唯一方式,如果有其他请告诉我。

2 个答案:

答案 0 :(得分:0)

您可以构建窗口,在您喜欢的地方放置扩展器(例如在图片下方)。扩展器本身将是打开包含您的信息的额外部分的按钮。

   <Expander>
        <Grid ...>
            <Grid.RowDefinitions>
                ....
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                ...
            </Grid.ColumnDefinitions>
            //put your content here
        </Grid>
    </Expander>

你也可以使用扩展器的TemplateProperty在它打开时附加一些动画。

扩展器是一个控件,可以“隐藏”窗口的一部分,直到它被切换为止,您可以在其中放置任何您想要的内容。你不需要弹出窗口,除非它真的是你想要的

答案 1 :(得分:0)

windows Activated 和 Deactivated 有两个事件

已激活 - https://docs.microsoft.com/en-us/dotnet/api/system.windows.window.activated?view=net-5.0

停用 - https://docs.microsoft.com/en-us/dotnet/api/system.windows.window.deactivated?view=net-5.0

当主窗口失焦时触发了 Deactivated 事件,这里设置 popup.IsOpen 为 false 一旦主窗口聚焦 Activated 事件被触发,将 Popup.IsOpen 设置为 true。

示例:

Private Popup myPopup;
public Constructor()
{
      myPopup = new Popup();

      TextBlock textContent = new TextBlock();
      textContent.Text = "Here is my Code";

      myPopup.Child =  textContent; 

      System.Windows.Application.Current.MainWindow.Activated += ActivatePopupWindow;
      System.Windows.Application.Current.MainWindow.Deactivated += DeActivatePopupWindow;
}

 private void DeActivatePopupWindow(object sender, EventArgs e)
 {
      myPopup.IsOpen = false;     
 }

 private void ActivatePopupWindow(object sender, EventArgs e)
 {
      myPopup.IsOpen = true;      
 }