2011-08-27 24 views
2

我有需要的第一和第三列有在所有的時間相同幅度的用戶控件。 我的代碼是一個如下所示:WPF:星ColumnDefinition不擴大列

<UserControl x:Class="UserControls.ListBoxSelector" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <Grid> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="5*" /> 
      <ColumnDefinition Width="Auto" /> 
      <ColumnDefinition Width="5*" /> 
     </Grid.ColumnDefinitions> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="*" /> 
     </Grid.RowDefinitions> 
     <ListBox x:Name="ListBox_Source" Grid.Column="0" Grid.Row="0" /> 
     <StackPanel Grid.Column="1" Grid.Row="0" Orientation="Vertical"> 
      <Button Content="&gt;" Click="Button_Add_Click"/> 
      <Button Content="&lt;" Click="Button_Remove_Click" /> 
     </StackPanel> 
     <ListBox x:Name="ListBox_Destination" Grid.Column="2" Grid.Row="0" /> 
    </Grid> 
</UserControl> 

結果未如預期作爲列3(ListBox_Destination)沒有展開的。 是不是5 *在ColumnDefinition足以迫使2列表框爲相同的寬度??

更新:對不起,我忘了提,只是問題當我把控制使用微軟絲帶WPF一個RibbonGroup

+1

是,這將導致每個都使用剩餘的可用寬度的相同的量。你的例子對我來說工作得很好。你看到什麼問題? –

回答

2

有時候,當你把你的控制certian類型的佈局控件(如一個StackPanel),它不會大小如預期,因爲父佈局只會大小孩子對它來說是最小的期望大小(只是足以顯示內容)。這可能是您將其放入RibbonGroup時看到此內容的原因。嘗試給你的網格一個寬度或MinWidth,看看是否有所作爲。

0

是它迫使列1和3是的發生相同的大小,但它不會gaurentee內容(列表框)在colulms將是相同的大小。你必須設置的內容的大小要佔用整個空間

+0

由於默認的Horizo​​ntalAlighnment設置爲伸展,因此不需要設置列表框的寬度。 –

+0

你是對的。我得到了默認錯誤。 – Schu