2011-03-16 7 views
2

가 나는 WPF 창은 다음과 같이 XAML에 정의 된 무시 :C# WPF 창 너비, 최대 너비는의 minWidth는

<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 픽셀입니다. 내 너비 특성은 무시됩니다. Window 안의 어떤 내용도 70 픽셀보다 큽니다.

그립을 사용하여 창 크기를 조정하려고해도 특정 너비 아래에서 크기를 조정할 수 없습니다. WPF가 창 너비를 더 작게 설정하지 않는 이유가 있습니까? 모든 창에 숨겨진 최소 너비 값이 있습니까? 어떻게이 문제를 해결할 수 있을까요?

편집 : Windows 속성에 WindowsStyle = "None"을 추가하면 폭이 70 픽셀로 올바르게 설정됩니다. 그러나 이것은 내가 원하는 창 스타일이 아닙니다.

감사

+0

어쩌면 창의 내용 중 일부가 현재 창 크기보다 클 수 있습니까? –

답변

4

당신은 MinWidth의 크기 (70)에 따라서 설정하여 Window 것 이상이어야한다 캔트. 컨트롤 상자 때문에 BTW의 너비가 132보다 작은 것으로 보입니다.

WindowStyle="none"을 설정하면 제목과 컨트롤 상자가 제거되어 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> 

는 매우이다

<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 창 폭을 만들려면 너비가 작 으면 닫기 버튼과 함께 버튼을 최소화하고 최대화 할 수 없습니다.

+0

정확히 너비가 70이 되길 원하지만 Window가 표시 될 때 항상 70- 픽셀 대신 80-90 픽셀이됩니다. – Garrett

+0

내가 제안한 컨트롤 상자를 제거한 다음 너비를 70으로 설정할 수 있습니다. 너비 = 창에서 70. –

+0

WindowStyle = "none"을 사용하면 width = 70을 준수한다는 것을 알고 있습니다. 그러나 WindowStyle = "none"은 사용할 수 없습니다. 응용 프로그램에 제목 표시 줄에 Windows 크롬과 닫기 버튼이 있어야하기 때문입니다. 어떤 컨트롤 박스를 언급하고 있습니까? – Garrett

2

70 픽셀 단위가 아닙니다. WPF는 점에서 작동하며 실제로 화면 DPI (Dots per Inch)를 기반으로 픽셀 크기로 창 크기를 조정합니다.

+0

그는 픽셀 단위로 DIU (Device Independent Units)를 참조합니다 :) –

+0

데스크톱 크기 조정 (Windows 설정, 앱 설정 아님)이 125 %로 설정된 경우 WPF 창 크기 (너비, 최소 너비, 최대 너비, 실제 너비)은 70x1.25 = 87.5 물리적 픽셀이됩니다. WPF 응용 프로그램을 다시 하드웨어 픽셀로 디 스케일링하는 방법이 있지만 매우 높은 DPI 컨텍스트에서 문제가 발생하기 때문에 권장하지 않습니다. –

0

WindowStyle = "ToolWindow"및 ResizeMode = "NoResize"를 추가하여 원하는 작업을 수행 할 수있었습니다. 이렇게하면 제목 표시 줄과 닫기 단추를 유지하면서 창 너비를 70pt로 설정할 수있었습니다.

+0

회신을 답으로 표시하십시오. –