スタイル セッターを使用して ComboBoxItem (およびボタン) を伸ばし、次のように ComboBox の全長にまたがるようにしました。
<ComboBox >
<ComboBox.Resources>
<Style TargetType="ComboBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</ComboBox.Resources>
<ComboBoxItem >
<DockPanel >
<Button Content="My Button" />
</DockPanel>
</ComboBoxItem>
</ComboBox>
これはうまくいきます。次に、同じ ComboBoxItem 内にボタンを追加しますが、Visibility Collapsed に設定します。
<ComboBox >
<ComboBox.Resources>
<Style TargetType="ComboBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</ComboBox.Resources>
<ComboBoxItem >
<DockPanel >
<Button Content="My Button" />
<Button Content="My Collapsed Button" Visibility="Collapsed" />
</DockPanel>
</ComboBoxItem>
</ComboBox>
これで、新しいボタンは非表示になりましたが、上記のコードのように、元のボタンが ComboBox 全体を引き伸ばすことを期待していました。ただし、そうではありません。これはなぜですか?これに対する解決策はありますか?Visibility プロパティを編集するために DataTriggers を使用しています。
注: ComboBox で HorizontalContentAlignment="Stretch" を設定した場合も同じ結果になります。
更新: OK、これは実際には DockPanel と関係があります。これを StackPanel に変更したところ、希望どおりに動作しました。ただし、2 番目のボタンが折りたたまれている場合に、最初のボタンが DockPanel 全体を引き伸ばさない理由については、まだ興味があると思います。