문제

WPF/Silverlight 레이아웃의 경우 많은 행과 열 또는 수많은 스택 패널이있는 그리드를 사용하는 것이 좋습니다.

도움이 되었습니까?

해결책

수평 및 수직으로 정렬하기 위해 물건이 필요한 경우 그리드를 사용해야합니다. StackPanel을 사용하여 다른 것들이 다른 것과 줄을 필요로 할 필요가없는 경우 행이나 열의 열을 만듭니다.

그러나이 두 가지 옵션으로 자신을 제한하지 마십시오. 특히 Dockpanel을 살펴보십시오. 스택 패널보다 약간 더 복잡하지만 마크 업은 그리드만큼 어수선하지 않습니다. DockPanel에 대한 좋은 기사는 다음과 같습니다.

Silverlight 2에서 DockPanel 사용

다른 팁

사용하는 컨테이너는 컨텐츠를 기반으로해야하며 한 가지 접근 방식이 다른 접근 방식보다 낫지 않은지 여부가 아닙니다. 수평 및 수직으로 정렬 해야하는 것이 필요한 경우 실제로 그리드를 사용해야합니다. 그러나 그 외에는 실제로 표시하려는 콘텐츠에 달려 있습니다.

그리드가 더 나은 아이디어라고 생각합니다. 나는 일반적으로 그리드로 일반 레이아웃을 설정하고 여기 저기 몇 개의 스택 패널을 사용하여 특정 작업을 수행합니다. 또한 그리드에서 성능이 좋고 그리드가 일반적으로 더 많은 유연성을 제공한다는 느낌이 들었습니다.

나는 그리드가 더 나은 아이디어라고 생각하지 않습니다.

예를 들어, 기존 그리드 레이아웃 문서에 행을 삽입하려면 (중간)

출구 행은 1,2,3,4이고 요구 사항은 1과 2 사이의 새 행을 삽입하는 것입니다.

그런 다음 2,3,4에서 3,4,5로 변경해야했습니다 (모든 태그를 찾으십시오 ....)

한 행이 3-5 개의 열이 있는지 생각해보십시오 ... 모든 디지털에 재정의하는 것은 더러운 일입니다. !!!

새 요소, 행 또는 열을 삽입 할 때 변경하기가 더 쉽기 때문에 StackPanel을 선호합니다. 그리드를 사용하면 귀하가 어디에 있는지 확인하려면 행 번호와 열 번호를 읽어야합니다. 스택 패널을 사용하면 둥지를 따라 가면 그리드보다 쉽고 지저분합니다.

예를 들어, XAML 페이지에서 부모 그리드와 같은 수평 스택 패널을 사용한 다음 열이 필요한 경우 별도의 "수직"스택 패널이 중첩되었습니다. 이런 식으로 수평 스택 패널은 "그리드"가되고 중첩 된 수직 스택 패널은 열이됩니다. 그리드의 행과 열을 읽고 수정하기가 더 쉽습니다.

둘 다 강도 (그리드/스택 패널)가 있습니다. 그리드의 문제는 라인 구조 조정입니다. StackPanel의 문제점은 테이블 구조가 없다는 것입니다 (고정 열 폭). 그래서 나는 이것이이 문제에 대한 좋은 해결책이라고 생각합니다 :-)

정의 스타일

<Page.Resources>
    <Style x:Key="LabelCol1" TargetType="Label">
        <Setter Property="Width" Value="200" />
    </Style>
    <Style x:Key="EditCol2" TargetType="TextBox">
        <Setter Property="Width" Value="250" />
        <Setter Property="TextWrapping" Value="Wrap" />
        <Setter Property="Margin" Value="3" />
    </Style>
    <Style x:Key="ButtonCol3" TargetType="Button">
        <Setter Property="Width" Value="120" />
        <Setter Property="Margin" Value="3" />
        <Setter Property="VerticalContentAlignment" Value="Center" />
        <Setter Property="HorizontalContentAlignment" Value="Center" />
    </Style>
</Page.Resources>

스타일을 스택 패널에 사용합니다

<StackPanel>
    <StackPanel Orientation="Horizontal">
        <Label Style="{StaticResource LabelCol1}" Content="Solution path"  />
        <TextBox Style="{StaticResource EditCol2}" />
        <Button Style="{StaticResource ButtonCol3}" Content="Open..." />
    </StackPanel>
    <StackPanel Orientation="Horizontal">
        <Label Style="{StaticResource LabelCol1}" Content="Solution name"  />
        <TextBox Style="{StaticResource EditCol2}" />
    </StackPanel>
</StackPanel>

나는 그러한 레이아웃에 대한 경험이 없지만, 많은 중첩 스택 패널에 비해 그리드가 렌더링하기가 더 쉽다고 내기를 할 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top