鑑於以下XAML,我的目標是始終保持列AAA,BBB,CCC始終可見。具有列表框的列可以一直調整到零。XAML - 無法在這種情況下將元素大小調整爲0寬度
如果我刪除列表框,那麼應用程序的工作方式就是我想要的。也就是說,它沒有遵守最小寬度的怪異行爲。
隨着列表框(或DataGrid中)以下XAML有此行爲:
啓動應用程序後,如果我拖動splitterA一路接近BBB(BBB將保持25所需的寬度),然後將分離器B一直拖到右邊,那麼AAA將具有期望的寬度25.
另一方面,在啓動應用程序後,如果將splitterA一直拖到右側(AAA將保持所需的寬度25),然後拖動splitterB一直到右側,那麼AAA將離開屏幕。令人驚訝的是,如果我然後拖動splitterA只是一個像素向左,那麼兩列將「捕捉」到正確的位置。
<Grid Background="CadetBlue" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition />
<ColumnDefinition MinWidth="60"/>
</Grid.ColumnDefinitions>
<TextBlock Text="CCC" Width="25" />
<ListBox Grid.Column="1" />
<GridSplitter Width="5" Grid.Column="2" Name="splitterB" HorizontalAlignment="Left" />
<Grid Background="Aqua" Grid.Column="2" Margin="5,0,0,0" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition />
<ColumnDefinition MinWidth="30"/>
</Grid.ColumnDefinitions>
<TextBlock Text="BBB" Width="25" />
<ListBox Grid.Column="1" />
<GridSplitter Width="5" Grid.Column="2" Name="splitterA" HorizontalAlignment="Left" />
<Grid Background="BurlyWood" Grid.Column="2" Margin="5,0,0,0" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBlock Text="AAA" Width="25" />
<ListBox Grid.Column="1" />
</Grid>
</Grid>
</Grid>
爲什麼當我刪除列表框?
注意:我稍微修改了問題和XAML代碼,以澄清事情並顯示我剛纔發現的有關列表框的內容。
您可能必須複製/粘貼錯誤的XAML,因爲沒有按一個沒有工作。 CCC和列表框共享同一列,剩下的幾乎與我的代碼相同。 – Manuel 2012-02-01 01:12:09
對不起。你是對的,現在還不是很完美,我猜想我錯過了你的更新評論。但是,如果不知道你要做什麼,我不知道你是什麼,也不願意改變。 – Phil 2012-02-01 03:35:11
我要去的效果是能夠調整這些部分的大小(以及內部的列表框來匹配可用空間),但只能在AAA,BBB和CCC列同時完全可見的情況下進行調整。我覺得現在的xaml幾乎是*那裏,但是由於某種原因,當你先縮小AAA部分然後縮小部分BBB時,它會有一種奇怪的行爲。如果您收縮BBB和AAA,它會按預期工作。 (請參閱編輯) - 謝謝 – Manuel 2012-02-01 05:38:34