3

我有一个ListBox使用DataTemplate. 单曲ListBoxItems显示为 aTextBlock和 a ComboBox。我现在想将 Style 用于 theListBoxItems而不将其用于 inner 的项目ComboBoxes。不幸的是,ComboBoxItem继承ListBoxItem似乎使这成为不可能。或者我在这里错过了什么?

<ListBox Grid.Row="1" Grid.Column="1" Name="comboBoxI" Margin="2"
                ItemsSource="{Binding SomeCollection}" IsSynchronizedWithCurrentItem="True">
    <ListBox.Resources>
        <Style TargetType="ListBoxItem">
            <Style.Resources>
                <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent"/>
                <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="Black"/>
                <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Transparent"/>
            </Style.Resources>
        </Style>
    </ListBox.Resources>
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="{Binding Name}" Width="320" Padding="1,1,1,1" 
                        <TextBlock.ToolTip>
                            <ToolTip Content="{Binding Path=Description}"/>
                        </TextBlock.ToolTip>
                </TextBlock>
                <ComboBox ItemsSource="{Binding SomeOtherCollection}" IsSynchronizedWithCurrentItem="True"
                    <ComboBox.ItemTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding CreationInfo}" Width="Auto" Padding="1,1,1,1">
                                <TextBlock.ToolTip>
                                    <ToolTip Content="{Binding Path=Description}"/>
                                </TextBlock.ToolTip>
                            </TextBlock>
                        </DataTemplate>
                    </ComboBox.ItemTemplate>
                </ComboBox>
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

我还尝试为 添加另一种样式ComboBoxItem,但在这种情况下,我不知道如何将颜色重置为默认值。

感谢您的任何建议!

亨德里克。

4

1 回答 1

1

也许有更好的解决方案。但正如您提到的,您可以恢复默认颜色:

<Style TargetType="ComboBoxItem">
    <Style.Resources>
        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="{x:Static SystemColors.HighlightColor}"/>
        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="{x:Static SystemColors.HighlightTextColor}"/>
        <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="{x:Static SystemColors.ControlColor}"/>
    </Style.Resources>
</Style>

评论

不幸的是,仅将ListBoxItem样式应用于此将不起作用,因为您更改了对所有内部控件有效而不是属性的系统画笔。ListBoxListBox.ItemContainerStyleListBoxItem

于 2012-09-06T12:35:36.367 回答