c# - 将浮动选项卡与主窗口分开处理的功能
问题描述
上下文:我启动我的主窗口。在该窗口中,我创建了三个新选项卡。我浮动两个选项卡并将另一个留在主窗口中。我目前正在尝试解决两个问题:
我希望能够在不隐藏其他浮动选项卡的情况下最小化主窗口。
当将焦点转移到另一个程序(例如 Chrome)然后单击我的浮动选项卡时,我不希望我的所有其他浮动选项卡 + 主窗口回到前面,实际上隐藏了我的其他程序。
我相信这应该是可能的,因为 Visual Studio UI 是使用 WPF 构建的,我可以使用 VS 中的浮动选项卡来实现此功能。
解决方案
是的,你可以这样做。之所以最小化是因为浮动窗口的默认所有者是主窗口。所以你必须设置floatingWindow.Owner = null;
然后你也可以把主窗口放在浮动窗口的前面。如果你想在浮动窗口和主窗口之间切换,你可以设置floatingWindow.ShowInTaskbar = true;
.
在我的代码中,我把它放在一个 selectionChanged 事件处理程序中,所以当我弹出一个文档时,它会触发 selectionChanged 事件。
文档创建
private void userItem_Click(object sender, RoutedEventArgs e)
{
LayoutDocument ld = new LayoutDocument();
ld.Title = "All Users";
ld.ToolTip = "Manage all users";
//selection changed event
ld.IsSelectedChanged += Ld_IsSelectedChanged;
ld.IsActiveChanged += Ld_IsSelectedChanged;
Users users = new Users(ld);
ld.Content = users;
LayoutDocumentPane pane = ((todaysPayments.FindParent<LayoutDocumentPane>() ?? (panal.Children?[0] as LayoutDocumentPane)) ?? new LayoutDocumentPane());
pane.Children.Add(ld);
if (panal.ChildrenCount == 0)
{
panal.Children.Add(pane);
}
ld.IsSelected = true;
}
和事件处理程序
public void Ld_IsSelectedChanged(object sender, EventArgs e)
{
//get the floating windows from the DockingManager
manager.FloatingWindows.ToList().ForEach(floatingWindow =>
{
floatingWindow.Owner = null;
floatingWindow.ShowInTaskbar = true;
var fw = floatingWindow.Model as LayoutDocumentFloatingWindow;
floatingWindow.Title = fw?.RootDocument?.Title ?? "";
});
}
推荐阅读
- azure - 将多行合并为具有百分比贡献的单行
- java - 我必须在 FutureTask 中手动处理中断吗?
- android - 如何为风味变体创建两个不同版本的代码
- c++ - 全局变量的初始化和函数内部静态变量的初始化一样吗
- flutter - Peope API 没有显示电子邮件地址,但其他所有在 Flutter 中都可以正常工作
- c# - EF Core 5 - 具有相同(相关)外键的多个导航属性?
- avro - 使用 Avro Schema 创建 n 叉树
- angular - ./node_modules/@angular/material/esm2015/select.js 中的错误
- android - 如何限制颤振应用截屏?
- excel - 当您进行相等比较时,VBA 会检查什么?