2010-11-17 55 views
0

我有一个全屏WPF应用程序必须适应不同的屏幕分辨率,这意味着布局主要通过适当地设置VerticalAlignmentHorizontaAlignment并通过玩Margin适合扩展器控制内容到独立于分辨率的窗口

现在,在我的布局中,我有一个DockPanel与几个Expander控件内部水平扩展。我的预期结果与原始Xbox 360 Dashboard类似,但问题是: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> 

Listbox必须伸展,以填补所有可用空间。

我目前的解决方法是使用代码隐藏的.cs文件:我检查屏幕分辨率,减去扩展器头部所需的数量,然后在XAML文件上使用Width="{Binding Path=ControlWidth}",这不是一个很好的解决方案。

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

谢谢!

回答

0

DockPanel的内部放置一个Grid并将每个扩展器放入其自己的列;如果ListBox没有填满扩张,将其HorizontalAlignmentStretch

这样的回答可以帮助你,还有: How to get controls in WPF to fill available space?

+0

它似乎仍然没有工作..也许我没有正确地解释, 'Listbox'填充'Expander',但我需要'Expander'来分配更多的空间,以便将剩余的扩展器推到屏幕边缘,如下所示:http://img222.imageshack.us/img222 /2443/63180312.png – 2010-11-17 10:31:05