2011-03-16 114 views
2

WPF窗口是這樣的:C#WPF窗口寬度,MaxWidth,MinWidth忽略我在XAML定義

<Window x:Class="com.some.company.window" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
Title="My Cool Window" 
x:Name="CoolWindow" 
Height="435" 
Width="70" 
MinWidth="70" 
MaxWidth="70" 
Left="{PropertyState Default=0}" 
Top="{PropertyState Default=0}" 
Initialized="InitializeWindow" 
ResizeMode="NoResize" 
Style="{DynamicResource DefaultWindow}"> 
..... 
..... 
</Window> 

的問題是創建並在屏幕上顯示的窗口時 - 它總是大於我在寬度定義中指定的70個像素。寬度可能是80-90像素。我的寬度屬性被忽略。窗口內的內容都不超過70像素。

即使當我嘗試用手柄調整窗口大小時,它也不會讓我在特定寬度以下調整它的大小。有沒有什麼原因WPF不讓我把窗口的寬度設置得更小?每個窗口是否有隱藏的最小寬度值?我該如何解決這個問題?

編輯: 當我將WindowsStyle =「None」添加到Window屬性中時,寬度正確設置爲70像素。但是,這不是我想要的窗口樣式。

感謝

+0

也許某些窗口的內容大於當前窗口大小? – 2011-03-16 14:59:42

回答

4

您已設置MinWidth 70,因此大小的你Window不能低於這一點。順便說一句,因爲控制箱它的寬度似乎有一個最低限制132.

如果我們設置WindowStyle="none"刪除標題和控制框,我們可以使Window更小。

<Window x:Class="WpfApplicationUnleashed.Window1" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:local="clr-namespace:WpfApplicationUnleashed" 
     Title="" WindowStyle="None" Width="70"> 
    <Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"> 
    </Grid> 
</Window> 

編輯

使窗口寬度70,而關閉按鈕,標題文本仍清晰可見,並沒有調整大小使用本:

<Window x:Class="WpfApplicationUnleashed.Window1" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:local="clr-namespace:WpfApplicationUnleashed" 
     Title="My Window" WindowStyle="ToolWindow" Width="70" ResizeMode="NoResize"> 
    <Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"> 
    </Grid> 
</Window> 

因爲70是一個非常小寬度,你不能最小化和最大化按鈕,並關閉按鈕。

+0

我希望寬度恰好爲70,但是當窗口顯示時,它總是在80-90像素左右,而不是我想要的70像素 – Garrett 2011-03-16 15:25:41

+0

按照我的建議去掉控制盒,然後通過設置Width = 70來設置寬度。 70在窗口。 – 2011-03-16 15:29:05

+0

我知道如果我使用WindowStyle =「none」,它會尊重寬度= 70。但是,我無法使用WindowStyle =「none」,因爲我的應用程序需要標題欄中的Windows chrome和關閉按鈕。你指的是什麼控制箱? – Garrett 2011-03-16 15:35:33

2

70您指定的不是像素。 WPF的工作點,它實際上根據屏幕DPI(每英寸點數)窗口大小的像素。

+0

我猜像素他指的是DIU(設備無關單位):) – 2011-03-16 16:52:52

+0

如果您的桌面縮放(Windows設置,而不是應用程序設置)設置爲125%,然後WPF窗口大小(寬度,最小寬度,最大寬度,ActualWidth )的70將是70x1.25 = 87.5物理像素。有許多方法可以將WPF應用程序縮減爲硬件像素,但不建議這樣做,因爲它會在非常高的DPI環境中引發問題。 – 2017-01-20 20:10:36

0

我能夠通過添加WindowStyle =「ToolWindow」和ResizeMode =「NoResize」來做我想要的。這允許我保持標題欄和關閉按鈕,同時允許窗口寬度設置爲70pt。

+0

請將我的答覆標記爲答案。 – 2011-03-16 17:05:21