0

スタイル セッターを使用して 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 で Horizo​​ntalContentAlignment="Stretch" を設定した場合も同じ結果になります。

更新: OK、これは実際には DockPanel と関係があります。これを StackPanel に変更したところ、希望どおりに動作しました。ただし、2 番目のボタンが折りたたまれている場合に、最初のボタンが DockPanel 全体を引き伸ばさない理由については、まだ興味があると思います。

4

1 に答える 1

1

DockPanel.Dockプロパティを設定するだけですTop

  <ComboBox Margin="0,0,0,129">
      <ComboBox.Resources>
          <Style TargetType="ComboBoxItem">
              <Setter Property="HorizontalContentAlignment" Value="Stretch" />
          </Style>
      </ComboBox.Resources>
      <ComboBoxItem >
          <DockPanel >
              <Button Content="My Button" DockPanel.Dock="Top" />
              <Button Content="My Collapsed Button" Visibility="Collapsed" />
          </DockPanel>
      </ComboBoxItem>
   </ComboBox>
于 2012-12-17T05:00:43.547 に答える