2014-05-18 2 views
1

CheckListBox 컨트롤의 크기를 세로로 조정하는 데 문제가 있습니다 (https://wpftoolkit.codeplex.com/). 저는 WPF에서 1 주일 된 초보자입니다. 따라서 이것은 (세로) 크기 조정에 대한 일반적인 문제 일 수 있습니다.WPF에서의 세로 크기 조정 문제

그리드가 주어지면 처음 5 개 행의 크기를 원하는대로 지정하고 뷰포트에서 6 행의 CheckListBox 컨트롤을 남은 공간을 수직으로 채우기를 원합니다.

많은 문제가있는 CheckListBox를 채울 때 컨트롤은 뷰포트를 확장/오버플로합니다. 내가 원하는 것은 남은 공간의 높이를 수직으로 가정하여 내부 스크롤바를 표시합니다.

<Grid Grid.Column="0"> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto" /> 
     <RowDefinition Height="Auto" /> 
     <RowDefinition Height="Auto" /> 
     <RowDefinition Height="Auto" /> 
     <RowDefinition Height="Auto" /> 
     <RowDefinition Height="*" /> 
    </Grid.RowDefinitions> 
    <Label Grid.Row="0">Some title</Label> 
    <RadioButton Grid.Row="1" GroupName="NameSortRadioButtonGroup">Firstname Lastname</RadioButton> 
    <RadioButton Grid.Row="2" GroupName="NameSortRadioButtonGroup">Lastname, Firstname</RadioButton> 
    <TextBox Grid.Row="3" Margin="0,5" /> 
    <Label Grid.Row="4" Content="{Binding ElementName=MyCheckListBox, Path=SelectedItems.Count}" /> 
    <xctk:CheckListBox 
     Grid.Row="5" 
     Name="MyCheckListBox" 
     VerticalAlignment="Stretch" 
     VerticalContentAlignment="Stretch" 
     Height="Auto" 
     /> 
</Grid> 

나는 단순화하기 위해 몇 가지 상위 요소를 생략했습니다. 그리드는 그리드 안에 있고, 그것은 캔버스에 있고, 그리드 안에 있으며,이 외부 그리드는 윈도우 요소의 직접적인 자식입니다.

내가

높이를 사용하여 CheckListBox의 높이를 설정할 수도 여기에합니다 (CheckListBox 버그의 가능성을 제거하기 위해) 및 높이 = "자동"으로 StackPanel에의 CheckListBox 컨트롤을 포장 시도 = "{ElementName을 = CheckListBoxStackPanelWrapper, 경로 =의 ActualHeight 바인딩}"

은 또한 처음에 먼저 StackPanel에 함께 전체 일을 시도하고 나중에 DockPanel 대신 Grid 컨트롤.

모든 경우에 CheckListBox가 창/뷰포트 밖으로 흐릅니다. 명시적인 높이를 주면 올바르게 동작하지만 분명히 윈도우 크기를 조정할 수 있습니다.

어떻게해야합니까? 당신의 외부 제어가 MSDN에서 자식 요소를 제한하지 않습니다 이는 Canvas 때문에

+0

은 '격자'에 직접있는 '격자'입니까, 아니면 다른 컨트롤의 일부입니까? – dkozl

+0

캔버스에있는 그리드에있는 더 많은 것들이 있습니다. 이 캔버스의 크기는 "콘텐츠 영역"이며 효과적으로 뷰포트로 언급됩니다. –

+1

'캔버스 '문제입니다. [MSDN] (http://msdn.microsoft.com/en-us/library/system.windows.controls.canvas.aspx)에서 : Canvas의 _Child 요소는 항상 원하는 전체 크기로 제공됩니다. 그리하여 당신의'그리드 (Grid)'는 필요한만큼의 공간이 주어질 것입니다. – dkozl

답변

1

는 의견을 요약하면 : 캔버스의

자식 요소는 항상 전체 크기를 주어 그들이 원하는 것을

즉, Grid은 필요한만큼 많은 공간이 제공됩니다. 한가지 해결책은 Canvas 부분을 제거하거나 크기를 제한하는 것입니다. Grid 또는 확장 행

+0

고마워요. 외부 캔버스를 제거하고 일반적으로 중첩을 줄였습니다. 그리드가 올바르게 흐름을 제한하고 있습니다. –