使高亮刷与控制刷相同,而无需指定颜色。

8

我希望确保选定的ListViewItem的非聚焦背景与聚焦背景相同。 我知道通常的做法如下:

<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Blue"/>
<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Blue"/>

然而,问题在于我不想指定颜色,我只想返回由静态资源控制的Brush,其键为ControlBrushKey,与HighlightBrushKey的Brush相同。
2个回答

13
答案是这样的:
<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" 
           Color="{DynamicResource {x:Static SystemColors.HighlightColorKey}}" />

0

试试这个...我知道将两个属性设置为匹配是可行的,但不确定在你的情况下是否有效,但值得一试:

<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" 
                 Color="Blue"/>
<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" 
                 Color="{DynamicResourse SystemColors.HighlightBrushKey.Color}"/>

我使用文本框作为游乐场进行了测试。我不确定您的确切应用程序,但这是我的测试标记:

<TextBox>
    <TextBox.Background>
        <SolidColorBrush  x:Key="{x:Static SystemColors.HighlightBrushKey}" 
                Color="Blue"></SolidColorBrush>
    </TextBox.Background>
    <TextBox.Foreground>
        <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" 
                Color="{DynamicResource SystemColors.HighlightBrushKey.Color}" />
    </TextBox.Foreground>
</TextBox>

这只是将背景设置为蓝色,并将前景设置为背景,这是预期的结果。


它不起作用。尝试以下操作,你就会明白我的意思。从ListView中选择一个项目,然后单击TextBox。<Grid> <Grid.RowDefinitions> <RowDefinition /> <RowDefinition /> </Grid.RowDefinitions> <ListView> <ListView.ItemContainerStyle> <Style TargetType="ListViewItem"> <Style.Resources> <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Blue"/> <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="{DynamicResource SystemColors.HighlightBru - Chris Ward

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接