2012-06-04 3 views
0

내 UI에는 두 개의 열과 한 개의 행으로 구성된 큰 그리드가 있습니다. 오른쪽 열에는 맨 위 행에 사용자 정의 컨트롤이있는 3 개의 행이있는 격자가 있고 두 개의 아래쪽 행에는 각각 Expander 개의 개체가 있으며 런타임에 채워지는 목록이있는 ItemsControl이 들어 있습니다. 때로는 그 목록이 실제로 길어지고 화면에서 아래쪽으로 누출됩니다.부모 경계에서 WPF 격자 유지하기

내가하고 싶은 일은 사용자가 두 확장기를 모두 볼 수 있고 두 확장기를 모두 보면서 확장하거나 축소 할 수 있습니다. WrapPanel 또는 StackPanel에 포장했지만 아무 소용이 없습니다.

여기 내 문제를 설명하는 데 도움이되는 몇 가지 코드입니다 :

<Grid Grid.Row="1" x:Name="grid1"> 
<Grid.RowDefinitions> 
    <RowDefinition Height="*" /> 
    <RowDefinition Height="*" /> 
</Grid.RowDefinitions> 
<Expander Grid.Row="0" Header="Expander 1" x:Name="expander1" FontSize="14" IsExpanded="True"> 
    <Expander.Background> 
     <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
      <GradientStop Color="#FFC4C4C4" Offset="0" /> 
      <GradientStop Color="White" Offset="1" /> 
     </LinearGradientBrush> 
    </Expander.Background> 
    <ContentPresenter Content="{Binding ViewModel.OpenAlerts, ElementName=m_viewControl}" ClipToBounds="True"/> 
</Expander> 
<Expander Grid.Row="1" x:Name="expander2" Header="Expander 2" FontSize="14" IsExpanded="True"> 
    <Expander.Background> 
     <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
      <GradientStop Color="#FFC4C4C4" Offset="0" /> 
      <GradientStop Color="White" Offset="1" /> 
     </LinearGradientBrush> 
    </Expander.Background> 
    <ContentPresenter Content="{Binding ViewModel.ClosedAlerts, ElementName=m_viewControl}" ClipToBounds="True"/> 
</Expander> 
</Grid> 

어떤 도움이나 조언은 높게 평가 될 것이다!

감사합니다. John.

답변

1

Expanders에 어떤 UI 요소가 있는지 명확하게 알지 못하지만, 예를 들어 ListBox은 잘 작동합니다. 항목 수가 격자 열의 할당 된 공간보다 클 경우에는 스크롤바가 표시됩니다.

하지만 당신은 또한 당신에게 또한 잘 작동하는 ScrollViewer 내부 StackPanel 항목의 목록을 포장 할 수 있습니다

<Expander Grid.Row="0" Header="Expander 1" x:Name="expander1" FontSize="14" IsExpanded="True"> 
    <Expander.Background> 
    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
     <GradientStop Color="#FFC4C4C4" Offset="0" /> 
     <GradientStop Color="White" Offset="1" /> 
    </LinearGradientBrush> 
    </Expander.Background> 
    <ScrollViewer> 
    <StackPanel> 
     <TextBlock>Test</TextBlock> 
     <TextBlock>Test</TextBlock> 
     <TextBlock>Test</TextBlock> 
     <!-- etc.. --> 
     <!-- etc.. --> 
    </StackPanel> 
    </ScrollViewer> 
</Expander> 

또한 당신을 위해 작동합니다.

+0

Magnus를 입력 해 주셔서 감사합니다. 그러나 작동하지 않는 것 같습니다. 나는 분명하지 않을 수 있습니다 - 나는 그리드의 내용 (현재 그것은'ContentPresenter')이 보이기를 원합니다. 'ClipToBounds = "True"의존성 프로퍼티를 사용해 보았지만 이것이 작동하지 않는 것 같습니다. –

+0

미안하지만, 나는 이번 월요일에 두꺼워 야한다. 그러나 나는 이해할 수 없다. 샘플 XAML을 실제로 문제를 묘사하는 것으로 업데이트하십시오. 당신은 항목 목록 (크기)이 범인임을 지적했고 나의 이해를 돕기 위해 예제는 크기에 관계없이 훌륭하게 작동합니다. 두 확장자 모두 목록 크기에 관계없이 표시됩니다. 그러니 문제를 보여주는 최소한의 코드를 하드 코딩하십시오. –

+0

나는'Expander's에있는 실제 내용으로 코드를 업데이트하고 주석을 제거했습니다. 도와 주셔서 다시 한 번 감사드립니다! –