source

콘텐츠에 대한 WPF 컨트롤 크기

gigabyte 2023. 4. 14. 21:46
반응형

콘텐츠에 대한 WPF 컨트롤 크기

WPF 컨트롤의 크기를 WPF 컨트롤의 내용에 따라 변경하려면 어떻게 해야 합니까?

대부분의 컨트롤의 경우 높이와 너비를 다음과 같이 설정합니다.AutoXAML에 포함되며 콘텐츠에 맞게 크기가 조정됩니다.

코드에서는 폭/높이를 다음과 같이 설정합니다.double.NaN자세한 내용은 FrameworkElement를 참조하십시오., 특히 "주석" 섹션.

창문의 너비를 지정했는데 높이가 다음과 같은 문제가 있었습니다.Auto아이DockPanel그랬다면VerticalAlignmentVerticalContentAlignment를 Top으로 설정했지만 창은 여전히 콘텐츠보다 훨씬 더 높습니다.

Snoop을 사용하여, 저는 그 정보가ContentPresenter창(창문의 일부, 내가 거기에 넣은 것이 아님)에 있습니다.VerticalAlignment로 설정하다.Stretch전체 창을 다시 템플릿하지 않고는 변경할 수 없습니다.

많은 좌절 끝에, 나는 그 사실을 알게 되었다.SizeToContentproperty - 콘텐츠 크기에 따라 Window의 크기를 세로, 가로 또는 둘 다 지정할 수 있습니다.모든 것이 적절하게 사이징되고 있습니다.그 속성을 찾는 데 이렇게 오래 걸렸다는 것을 믿을 수 없습니다.

다른 컨테이너에 의해 구속되지 않고 자유롭게 페이지에 배치되는 사용자 컨트롤이 있었고, 사용자 컨트롤 내의 콘텐츠는 자동으로 크기가 조정되지 않고 사용자 컨트롤의 전체 크기로 확장됩니다.

사용자 컨트롤을 콘텐츠에 맞게 크기 조정하기 위해 높이만 그리드에 배치하고 다음과 같이 행에 자동 크기를 설정했습니다.

<Grid Margin="0,60,10,200">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>
    <controls1:HelpPanel x:Name="HelpInfoPanel"
                         Visibility="Visible"
                         Width="570"
                         HorizontalAlignment="Right"
                         ItemsSource="{Binding HelpItems}"
                         Background="#FF313131" />
</Grid>

그리드 또는 동일한 구성 요소를 사용하는 경우:XAML에서 그리드의 요소에 그리드가 있는지 확인합니다.행과 그리드컬럼이 정의되어 있어 여백이 없는지 확인합니다.디자이너 모드 또는 식 혼합을 사용한 경우 특정 셀 대신 전체 그리드에 상대적인 여백을 할당할 수 있습니다.셀 사이징에 대해서는 나머지 공간을 채우는 셀을 추가합니다.

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

언급URL : https://stackoverflow.com/questions/1746431/wpf-control-size-to-content

반응형