拟合扩展器控制内容到独立于分辨率的窗口

时间:2010-11-17 01:26:47

标签: c# wpf xaml wpf-controls wpf-4.0

我有一个全屏WPF应用程序,必须“适应”不同的屏幕分辨率,这意味着布局主要通过适当设置VerticalAlignmentHorizontaAlignment并使用{{1}进行播放来定义}。

现在,在我的布局上,我有一个Margin,其中有一些DockPanel控件在水平扩展。我的预期结果与原始Xbox 360 Dashboard类似,但问题是:Expander的内容窗格的宽度显然取决于内容占用的内容大小。我需要控件一直扩展到屏幕的末尾,只留下剩余Expander控件的空间(如上面链接中的图像)。

Expander的内容示例是:

Expander

<ListBox x:Name="lbDocentes" Margin="30,30,30,30" BorderThickness="0" ScrollViewer.VerticalScrollBarVisibility="Hidden" ScrollViewer.HorizontalScrollBarVisibility="Disabled" Background="Transparent"> <ListBox.ItemsPanel> <ItemsPanelTemplate> <WrapPanel x:Name="wrapPanel" IsItemsHost="True" ItemHeight="170" ItemWidth="340" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Orientation="Horizontal"/> </ItemsPanelTemplate> </ListBox.ItemsPanel> </ListBox> 必须拉伸以填充所有可用空间。

我目前的解决方法是使用codebehind .cs文件:我检查屏幕分辨率,减去扩展程序头所需的数量,然后在XAML文件上使用Listbox,这不是一个优雅的解决方案。 / p>

我需要以某种方式设置控件的宽度,以便我可以告诉它的内容延伸到可用空间。关于我如何才能在XAML代码中做到这一点的任何想法?

谢谢!

1 个答案:

答案 0 :(得分:0)

Grid内放置DockPanel并将每个扩展器放入其自己的列中;如果ListBox未填充展开者,请将其HorizontalAlignment设置为Stretch

这个答案也可以帮助你: How to get controls in WPF to fill available space?