4

遵循 XAML 会导致“我的东西”居中,ComboBox 直到我打开ComboBox,当它正确伸展自己时。

    <ComboBox Height="30" Width="300" HorizontalContentAlignment="Stretch" SelectedIndex="0">
        <ComboBoxItem HorizontalContentAlignment="Stretch">
            <Border Background="Red">
                <TextBlock>My stuff...</TextBlock>
            </Border>
        </ComboBoxItem>
    </ComboBox>

问题是,ComboBoxItem即使使用 选择它,是否有可能得到拉伸SelectedIndex?如果未触及 SelectedIndex (-1) 并且使用键盘选择项目,则会发生相同的错误或功能。

解决方法可能是在应用程序的开头以编程方式打开 ComboBox,这相当难看。

4

2 回答 2

8

您只需要将边框的宽度设置为外部控件的动态宽度:

例如

Width="{Binding ElementName=combox1, Path=ActualWidth}">

试试这个:

<ComboBox x:Name="combox1" Height="30" Width="300" HorizontalContentAlignment="Stretch" 
    SelectedIndex="0">
    <ComboBoxItem HorizontalContentAlignment="Stretch">
        <Border Background="Red" Width="{Binding ElementName=combox1, Path=ActualWidth}">
            <TextBlock>My stuff...</TextBlock>
        </Border>
    </ComboBoxItem>
</ComboBox>
于 2009-10-21T15:19:51.420 回答
2

我明白了——我确信有办法解决这个问题。这实际上取决于您想要的最终结果。您的每个数据项是否具有不同的背景颜色来识别它们,或者它只是您尝试实现的整个组合框的背景颜色。

如果是后者,试试这个 - 也许也删除突出显示的选择颜色,否则路线后面的代码可能是正确的,就预选你的第一个项目而言,因为这可能是一个选项。

整个背景颜色的示例:

    <ComboBox Background="Red" x:Name="combox2" Height="30" HorizontalContentAlignment="Stretch" SelectedIndex="0">
        <ComboBoxItem Background="Red" HorizontalContentAlignment="Stretch">
            <TextBlock Background="Red">My stuff...</TextBlock>
        </ComboBoxItem>
    </ComboBox>

希望这可以帮助!:)

于 2009-10-22T13:08:30.313 回答