2010-11-17 32 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