WPF作物应用程序窗口到屏幕分辨率

WPF作物应用程序窗口到屏幕分辨率,wpf,window,crop,screen-resolution,Wpf,Window,Crop,Screen Resolution,我有一个自定义窗口样式的WP应用程序。应用程序窗口的大小是固定的,不可调整大小(客户端请求) 如果屏幕资源小于应用程序窗口的大小,窗口将被裁剪。 如果我拖动窗口将裁剪的部分放入屏幕,它将保持不可见 如何告诉WPF停止将窗口裁剪到屏幕分辨率,以便在拖动窗口时仍能看到整个窗口 我的窗口的代码如下所示: <Window x:Class="AudioApplication.MainWindow" xmlns="http://schemas.microsoft.com/winfx

我有一个自定义窗口样式的WP应用程序。应用程序窗口的大小是固定的,不可调整大小(客户端请求)

如果屏幕资源小于应用程序窗口的大小,窗口将被裁剪。 如果我拖动窗口将裁剪的部分放入屏幕,它将保持不可见

如何告诉WPF停止将窗口裁剪到屏幕分辨率,以便在拖动窗口时仍能看到整个窗口

我的窗口的代码如下所示:

  <Window x:Class="AudioApplication.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
        mc:Ignorable="d" 
        d:DesignHeight="540"   d:DesignWidth="1020"
        xmlns:VW="clr-namespace:MyApp.View"
        Title="MyApp" AllowsTransparency="False" 
        WindowStyle="None" Background="#6C6D6C"
        ResizeMode="NoResize" ShowInTaskbar="True"
        WindowStartupLocation="CenterScreen" Width="1005" Height="500"
        Icon="/MyApp;component/MyApp.ico">

我不知道这个技巧是否符合您(客户)的期望,但我在几个应用程序中使用了以下代码

        //set window size
        this.Width = SystemParameters.MaximizedPrimaryScreenWidth - 6.0 - 2 * SystemParameters.BorderWidth;
        this.Height = SystemParameters.MaximizedPrimaryScreenHeight - 6.0 - 2 * SystemParameters.BorderWidth;
        this.Left = 0.0;
        this.Top = 0.0;
将其放置在Windows.Loaded事件处理程序中,Windows大小将适合整个桌面区域。您可以检查桌面大小,如果它小于窗口的原始大小,您最多可以进行调整


即使在窗口不允许用户调整大小的情况下,这种方法也应该有效。

我终于找到了解决方案。我必须设置MinWidth和MinHeight属性。我不知道这些可能会影响窗口的常规裁剪。

您运行的是哪个版本的Windows?我在64位Windows 7上进行了测试,也在32位Windows XP虚拟机上进行了测试,裁剪总是发生。应用程序包含一些固定大小的图形元素。这意味着-窗口永远不应该被调整大小,否则它的外观将被弄乱。对不起,但在这一点上我不确定是否理解。如果窗口必须保持其大小,并且屏幕可以设置为较低的资源,您如何适应UI区域?我不想适应它,我希望在拖动窗口时,窗口先前隐藏的部分变得可见。但是现在如果我拖动窗口,我看到WPF仍然会删除屏幕外的部分,并且不再重新绘制,即使它现在回到屏幕上并且应该是可见的。嗯……我明白了。哦,这似乎是图形驱动程序的问题,或者类似的问题。我会尝试实现一种机制来检测任何屏幕分辨率的变化,并相应地重新定位窗口。看看这里:是的,我也认为它与驱动程序或DirectX有关。但即使我在更改分辨率后启动应用程序,也会发生这种情况,因此分辨率更改检测没有任何用处。WPF只是没有画出屏幕外的部分,即使在屏幕上。