코드의 WPF 자동 높이


101

HeightC # 코드에서 WPF 컨트롤 의 속성 값 을 " Auto"로 설정하려면 어떻게해야합니까?

<Grid.RowDefinitions>
    <RowDefinition />
    <RowDefinition Height="Auto" />
    <RowDefinition />
    <RowDefinition Height="Auto" />
    <RowDefinition />
    <RowDefinition Height="Auto" />
    <RowDefinition />
    <RowDefinition Height="Auto" />
    <RowDefinition />
</Grid.RowDefinitions>

이 동작을 코드 뒤에서 재현하고 싶습니다. 어떤 아이디어?

답변:


144

아마도 이 링크는 당신을 도울 것입니다.

때때로 코드에서 WPF 요소의 높이 또는 너비를 프로그래밍 방식으로 자동으로 설정할 수 있습니다. 이렇게하려면 Double.NaN (숫자가 아님) 값을 사용하면됩니다.

예를 들어, C #에서 :

this.txtName.Width = Double.NaN;


1
제 경우에는 일하지 마세요. 하지만 행동을 통해 높이 너비를 변경하고 있습니다 (표현식 혼합 4.0 lib)
Franck

1
링크가 죽었하지만 당신은 보관 된 버전에 액세스 할 수 있습니다 여기에
akjoshi

2
Nimrod의 대답은 훨씬 더 명확하고 이해하기 쉽습니다.
David

'NaN'가져 오기는 'MaxWidth'속성에 유효한 값이 아닙니다.
Damitha

나는 Nimrod의 대답이 가장 깨끗하고 이제는 받아 들여진 대답이어야한다고 생각합니다 ( GridLength.Auto과거에는 가능 했는지 확실하지 않습니다 ). GridLength.Star나머지 영역을 채우는 것도 있습니다.
볼프강가 Schreurs

111

당신이 사용할 수있는

RowDefinition rd = new RowDefinition ();  
rd.Height = GridLength.Auto;  
ContentGrid.RowDefinitions.Add (rd);

8
이 답변과 수락 된 답변 사이에 차이점이 있습니까? 그렇지 않다면 이것은 프레임 워크를 우회하지 않는 가장 좋은 대답이되어야합니다.
estebro

3
리플렉터에 따르면 GridLength.Auto는 새로운 GridLength (1.0, GridUnitType.Auto); 따라서 수락 된 답변과 정확히 동일하지는 않지만 훨씬 더 읽기 쉽습니다.
helios456

이것은 허용되는 답변만큼 일반적인 해결책이 아닙니다. 모든 컨트롤이 Height 속성을 'GridLength'개체 (구조체)로 구현하는 것은 아닙니다. double을 사용하는 사람들에게는이 답변이 작동하지 않습니다. 그리고 질문은 일반적으로 묻는 것이 아니라 그리드를 예로 사용했습니다.
UuDdLrLrSs
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.