Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
防止WPF网格超出父边界_Wpf_Layout_Expander_Dockpanel - Fatal编程技术网

防止WPF网格超出父边界

防止WPF网格超出父边界,wpf,layout,expander,dockpanel,Wpf,Layout,Expander,Dockpanel,在我的UI中,我有一个两列一行的大网格。在右边的列中,我有一个包含三行的网格,在上面的行中我有一个用户控件,在下面的两行中我有两个Expander对象,每个对象都包含一个ItemsControl,其中有一个在运行时填充的列表。有时候,这个列表会变得很长,从屏幕上“溢出”到底部 我想做的是让用户看到两个扩展器,能够在看到它们的同时展开或折叠它们。我试着用WrapPanels或StackPanel将它们包装起来,但没有用 下面是一些代码来帮助解释我的问题: <Grid Grid.Row="1"

在我的UI中,我有一个两列一行的大网格。在右边的列中,我有一个包含三行的网格,在上面的行中我有一个用户控件,在下面的两行中我有两个
Expander
对象,每个对象都包含一个
ItemsControl
,其中有一个在运行时填充的列表。有时候,这个列表会变得很长,从屏幕上“溢出”到底部

我想做的是让用户看到两个扩展器,能够在看到它们的同时展开或折叠它们。我试着用
WrapPanel
s或
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.

确实不清楚您在
扩展器中有什么类型的UI元素,但例如
列表框可以正常工作,当项目数大于网格行中分配的空间时,它将显示滚动条

但您也可以将项目列表包装在
堆栈面板
中的
滚动查看器
中,这也可以正常工作:

<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>

试验
试验
试验

这也应该对你有用。

谢谢马格纳斯的意见,但这似乎不起作用。我可能不清楚-我希望网格的内容(目前是
ContentPresenter
)可见。我尝试使用
ClipToBounds=“True”
依赖项属性,但这似乎不起作用。很抱歉,本周一我一定很糊涂,但我不明白。您能用一些实际描述您的问题的东西更新您的示例XAML吗?您指出项目列表的(大小)是罪魁祸首,据我所知,我的示例无论大小都可以正常工作。无论列表大小如何,两个扩展器都是可见的。因此,请至少对一些展示您的问题的内容进行硬编码。我更新了代码并删除了注释,这些注释与我现在在我的
Expander
s中的实际内容相同。再次感谢你的帮助!