我的WPF应用程序是Per-Monitor Aware,通常扩展良好。但是,当应用程序窗口在第二个显示器上,scale=150%,我打开一个上下文菜单时,它使用主显示屏的scale=100%,使菜单项非常小:
x1c 0d1x(有趣的是,这些项目使用了正确的150%比例)
我打开上下文菜单设置IsOpen = true:
private void Button_Click(object sender, RoutedEventArgs e)
{
ContextMenu menu = new ContextMenu();
menu.Items.Add("item 1");
menu.Items.Add("item 2");
MenuItem submenu = new MenuItem();
submenu.Header = "submenu";
submenu.Items.Add("more 1");
submenu.Items.Add("more 2");
menu.Items.Add(submenu);
menu.IsOpen = true;
}
如何配置上下文菜单使用显示设置,它是打开,而不是从默认的主显示?
2条答案
按热度按时间pxyaymoc1#
您可以使用RenderTransform来撤消从PrimaryScreen的Scaling和从Visual的Scale到dpiScale:
ergxz8rk2#
对于任何人谁仍然有这个问题,这里是一个解决方案:将contextmenu的
PlacementTarget
设置为具有正确dpi比例的父控件。来源(无关联):https://blog.lindexi.com/post/WPF-%E4%BF%AE%E5%A4%8D-ContextMenu-%E5%9C%A8%E5%BC%80%E5%90%AF-PerMonitorV2-%E5%90%8E%E6%89%80%E7%94%A8-DPI-%E9%94%99%E8%AF%AF.html