ComboBoxItem到ComboBox的全宽,使用SelectedIndex或导航键盘?

时间:2009-10-17 19:03:01

标签: wpf xaml combobox selectedindex

以下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,这非常难看。

2 个答案:

答案 0 :(得分:6)

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

E.g。

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>

答案 1 :(得分:1)

我明白了 - 我相信这有一个方法。这真的取决于你想要的最终结果。您的每个数据项都有不同的背景颜色来识别它们,或者它只是您尝试实现的整个组合框的背景颜色。

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

全部背景颜色示例:

    <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>

希望这有帮助! :)

YourCodeFactory.com