我最近实施了this question的解决方案来隐藏WPF窗口的图标。我发现当该解决方案与ResizeMode=NoResize
一起使用时,应用程序的标题栏上下文菜单无法禁用最小/最大/调整大小选项。
奇怪的是上下文菜单没有错误地启用某些选项,它只是在隐藏图标之前离开上下文菜单的状态。我发现这是使用一个简单的测试应用程序,可以进行必要的调用来隐藏图标,并可以动态更新Window的ResizeMode
。
显示的图标,ResizeMode = CanResize
标题栏按钮和上下文菜单是正确的。
隐藏图标,ResizeMode = CanResize
仍然正确
隐藏图标,ResizeMode = NoResize
标题栏按钮被正确隐藏,但上下文菜单保留了之前的状态。如果我切换到CanMinimize
然后切换到NoResize
,则上下文菜单只会启用“最小化”。
当可调整大小的WPF窗口启动另一个设置为NoResize
的窗口(并且您正在隐藏图标)时,这会成为一个问题。
问题
是否有其他Windows API函数可以强制上下文菜单重新评估其状态? NoResize
选项可能导致这种奇怪的行为?因为这只影响NoResize
选项,WPF级别是否有解决方法?
编辑 - 我的目标是避免使用WindowStyle=ToolWindow
或WS_EX_TOOLWINDOW
扩展窗口样式。我在过去发现了一些窗口样式的问题,一个被描述为on this question。我对这整个方法的目标之一是模仿ToolWindow
的外观,而不必实际使用它。
答案 0 :(得分:1)
使用.NET 4.0和Windows 8.1 Enterprise(我不知道它是否适用于其他.NET版本或其他操作系统),您只需使用WS_EX_TOOLWINDOW
扩展样式而不是{{1}一个。
所以代码将是:
WS_EX_DLGMODALFRAME
我们希望它可以帮到你。