2009-05-01 4 views
197

내가하려는 것은 명시 적으로 높이/너비가 아닌 창을 표시하는 것입니다 (두 값 모두 생략되거나 Auto으로 설정 됨). 나는 포함 된 모든 usercontrols 크기를 자동으로 계산하여 창 크기를 알아낼 것이라고 추측했지만 실제로 작동하지 않습니다! Window Height = "Auto"가 예상대로 작동하지 않습니다.

대신 나는 ActualwidthActualheight 값을 큰 창을 얻을 모두 512

창 선언으로 설정

:를 통해 대화로이 창을 표시

<Window x:Class="Window3" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Window3" 
    Height="Auto"> 
<StackPanel> 
    <Label>Window</Label> 
</StackPanel> 
</Window> 

(?!?!)

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button2.Click 
    Dim dlg As New Window3 
    dlg.ShowDialog() 
End Sub 

해결 방법은 있습니까? 폼의 많은 컨트롤이 생성자 매개 변수를 기반으로 축소되고 폼의 실제 크기를 찾으려고하면 까다 롭고 추악 할 것이므로 내 윈도우의 크기를 명시 적으로 설정하고 싶지 않습니다.

+6

당신은 또한'' "CenterScreen" '붙여 넣기'SizeToContent = "WidthAndHeight을"'복사 할 게으른 사람들을 위해 –

답변

360

창 속성을 SizeToContent to "WidthAndHeight"으로 설정하십시오. 도움이 될 것입니다.

+75

로 설정 .WindowStartupLocation'으로 창을 중심으로 할 수 있습니다) –

+4

SizeToContent = "WidthAndHeight"를 사용하는 것이주의하십시오. 창의 내용의 크기가 화면 크기보다 커지면 화면에서 창이 넘칠 수 있습니다. –

3

글쎄 창 너비를 자동으로 설정할 수 없습니다. 약간의 트릭을 사용할 수 있습니다. 기본 그리드 컨테이너의 이름을 지정하고 높이를 자동으로 설정 한 다음 창 높이를 기본 그리드 높이에 맞 춥니 다.

7

오래된 질문하지만, 업데이트 된 대답 :

이 Muad'Dib는 그의 대답에 제안 @으로 :

당신이 SizeToContent="WidthAndHeight"을 설정해야합니다.

창의 내용의 크기가 화면 크기보다 커지면 화면에서 창이 넘칠 수 있습니다. 그래서, 당신은 고려해야합니다

MaxWidth="600" 
MaxHeight="400" 
+0

그리고'MaxHeight = "400"'이 존중되지 않을 때 어떻게해야합니까? 그것은 화면 한도까지 자랍니다? – andrepaulo

관련 문제