我想在点击用户图标时显示用户信息,例如=>
首先,我是wpf设计的新手,经过一些研究后,虽然我可以使用popup
。所以我尝试使用popup
。但问题是弹出框提供了一种在单独的窗口中显示内容的方法(MSDN)所以当我改变父窗口的大小或最小化父窗口时,它不是效果popup
。Popup
展示位置始终有效。
所以请让我知道popup
是我要求的唯一方式,如果有其他请告诉我。
答案 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;
}