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