次のXAMLが与えられたら、私の目標は列AAA、BBB、CCCを常に見えるようにすることです。リストボックスのある列は、すべてゼロにサイズ変更することができます。XAML - この例では要素の幅を0に変更できません
私がリストボックスを削除すると、アプリケーションはまさに私が望むように動作します。つまり、最小幅が尊重されない奇妙な振る舞いはありません。それから、私はBBBまでずっと近いsplitterAをドラッグした場合(BBBは25の所望の幅を維持します)、アプリケーションを起動した後
:リストボックス(またはデータグリッド)で
は以下のXAMLは、この動作を持っていますスプリッタBを右にずらしてドラッグすると、AAAの幅は25になります。
一方、アプリケーションを開始した後、スプリッタAを右にドラッグすると(AAAは希望の幅25)、スプリッタBを右にドラッグすると、AAAが画面から消えます。驚いたことに、スプリッターを左に1ピクセルだけドラッグすると、両方の列が正しい場所に「スナップ」されます。
<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コードを少し変更して、わかりやすく、リストボックスの内容を表示しました。
仕事はありません。 CCCとリストボックスは同じ列を共有し、残りは私のコードとほとんど同じです。 – Manuel
申し訳ありません。あなたは正しい、それはまだそこにはない、私はあなたの更新されたコメントを見逃したと思う。しかし、あなたが行っている行動を正確に知らなくても、私はあなたが何であるかを知りませんし、変化したくはありません。 – Phil
私が行っている効果は、AAA、BBB、CCCの列を同時に完全に見えるようにする場合に限り、セクションのサイズを変更し(そして利用可能なスペースに合わせてリストボックスを内側に)変更できるようにすることです。現在のxamlが*ほぼそこにあるように感じますが、何らかの理由でセクションAAAを最初に縮小してからセクションBBBを縮小すると何らかの理由で奇妙な動作をします。 BBBを縮小してからAAAを縮小すると、期待どおりに動作します。 (編集を参照) - おかげで – Manuel