我使用了一个样式设置器来拉伸我的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 中添加了一个额外的按钮,但将其设置为"可见性折叠"。
<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,就像上面的代码一样。 但是,事实并非如此。 为什么会这样? 有解决方案吗? 我正在使用数据触发器来编辑可见性属性。
注意:如果我只是在ComboBox中设置LeveltalContentAlignment="Stretch",我也会遇到同样的事情。
更新:好的,这实际上与DockPanel有关。 我将其更改为StackPanel,它可以根据需要工作。 但是,我想我仍然很好奇,如果第二个按钮折叠,为什么我的第一个按钮不会拉伸整个 DockPanel?
只需将 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>