창 높이 =“자동”이 예상대로 작동하지 않습니다


223

내가하려고하는 것은 높이 / 너비가 명시 적으로없는 창을 표시하는 것입니다 (둘 다 값을 생략하거나으로 설정 Auto). 포함 된 모든 usercontrols 크기를 계산하여 창 크기를 자동으로 알 수 있다고 생각했지만 실제로는 작동하지 않습니다!

대신 큰 창이 Actualwidth있고 Actualheight값이 모두 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

이에 대한 해결책이 있습니까? 폼의 많은 컨트롤이 생성자 매개 변수를 기반으로 축소되고 폼의 실제 크기를 찾는 것이 까다로울 수 있기 때문에 창의 크기를 명시 적으로 설정하고 싶지 않습니다.


7
당신은 또한에 창을 중심으로 할 수 있습니다 .WindowStartupLocation에 세트"CenterScreen"
앤더스 린든

답변:


408

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


89
붙여 넣기를 원하는 게으른 사람들을 위해 SizeToContent="WidthAndHeight";)
Tono Nam

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

@KyloRen 따라서 MaxWidth 또는 MaxHeight는 문제를 피하기 위해 설정되어야합니다
Carlos Liu

@CarlosLiu 오랜 시간, 나는 연습을하지 못하고 기억할 수 없지만 논리적으로 그렇습니다. 데모를 시도해보십시오 :)
Kylo Ren

이것은 훌륭하지만, 그래도 궁금 이유 Height="Auto"Width="Auto"같은 일을 수행하지 않는 이유는 무엇입니까? 이 설정에서는 창 내용이 고려되지 않기 때문에 추측하고 있습니다.
Mike Lowery

7

오래된 질문이지만 업데이트 된 답변 :

@ Muad'Dib가 그의 대답에서 제안한 것처럼 :

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

창의 내용 크기가 화면 크기보다 커지면 화면에서 창이 넘칠 수 있습니다. 따라서 다음 사항을 고려해야합니다.

MaxWidth="600"
MaxHeight="400"

그리고 MaxHeight="400"존중되지 않으면 어떻게해야합니까 ? 화면 제한까지 커지나요?
andrepaulo

3

글쎄, 당신은 창 높이를 자동으로 설정할 수 없습니다.이 작업을 수행하려면 약간의 트릭을 사용하고 기본 메인 그리드 컨테이너의 이름을 지정하고 높이를 자동으로 설정 한 다음 창 높이를 메인 그리드의 높이에 바인딩하십시오


0

로드 된 이벤트 창이있는 현재 화면에서 크기 설정

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.