WPF получает текстовую мышку по умолчанию над цветом - PullRequest
0 голосов
/ 30 января 2020

Я хотел бы закрасить элемент управления точно таким же цветом, как по умолчанию мышь TextBox над цветом (желательно с учетом темы). например,

<Rectangle Fill={x:Static WhatDoIPutHere}/>

Под каким ключом / ресурсом я могу получить доступ к цвету? В моей нынешней системе он выглядит как #ff7eb4ea светло-голубой, но ни один из * Highlight *, * Control * или * Border * System Colors не имеет такого значения.

1 Ответ

0 голосов
/ 30 января 2020

Ты прав! MouseOver Border цвет #FF7EB4EA; который находится под TextBox.MouseOver.Border ключом. Я не думаю, что вы сможете получить доступ к этим ресурсам извне. Вы можете получить эти данные по умолчанию ControlTemplate для TextBox.

<SolidColorBrush x:Key="TextBox.Static.Border" Color="#FFABAdB3"/>
<SolidColorBrush x:Key="TextBox.MouseOver.Border" Color="#FF7EB4EA"/>
<SolidColorBrush x:Key="TextBox.Focus.Border" Color="#FF569DE5"/>
<ControlTemplate TargetType="{x:Type TextBox}">
    <Border x:Name="border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="True">
        <ScrollViewer x:Name="PART_ContentHost" Focusable="false" HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden"/>
    </Border>
    <ControlTemplate.Triggers>
        <Trigger Property="IsEnabled" Value="false">
            <Setter Property="Opacity" TargetName="border" Value="0.56"/>
        </Trigger>
        <Trigger Property="IsMouseOver" Value="true">
            <Setter Property="BorderBrush" TargetName="border" Value="{StaticResource TextBox.MouseOver.Border}"/>
        </Trigger>
        <Trigger Property="IsKeyboardFocused" Value="true">
            <Setter Property="BorderBrush" TargetName="border" Value="{StaticResource TextBox.Focus.Border}"/>
        </Trigger>
    </ControlTemplate.Triggers>
</ControlTemplate>

Если вы используете Blend для Visual Studio , обратитесь к this , чтобы узнать, как получить доступ по умолчанию к Templates любого элемента управления. Если вы используете Visual Studio , вы можете проверить это .

...