WPF SystemColors:TextBox边框的颜色

Gro*_*kys 7 wpf xaml styling

我正在尝试使用嵌入式放大镜图标进行搜索TextBox.到目前为止,我有以下标记:

<Border DockPanel.Dock="Bottom" Margin="2,4,0,4" 
        BorderThickness="1" SnapsToDevicePixels="True" 
        BorderBrush="{DynamicResource {x:Static SystemColors.ControlDarkBrushKey}}">
    <DockPanel>
        <StackPanel Orientation="Horizontal" DockPanel.Dock="Right">
            <Image Source="/Resources/search-13x13.png" Width="13"/>
        </StackPanel>
        <TextBox Name="searchTextBox" DockPanel.Dock="Bottom" BorderThickness="0" 
                 Text="{Binding FilterText, UpdateSourceTrigger=PropertyChanged}"/>
    </DockPanel>
</Border>
Run Code Online (Sandbox Code Playgroud)

但是,我在SystemColors中找不到与标准TextBox边框颜色相同的条目.默认情况下,这是一种蓝色.我在这里真的很蠢吗?!?

编辑:顺便说一下,图像包含在堆栈面板中,因为我打算在其中放置一个下拉箭头.

Nic*_*ong 5

您可以尝试使用 Microsoft.Windows.Themes.ListBoxChrome 而不是边框​​;这就是 TextBox 的默认模板使用的内容:

<ControlTemplate TargetType="TextBoxBase" 
                 xmlns:mwt="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero">
    <mwt:ListBoxChrome Name="Bd" SnapsToDevicePixels="True">
        <ScrollViewer Name="PART_ContentHost" 
                      SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}" />
    </mwt:ListBoxChrome>
    <ControlTemplate.Triggers>
        <Trigger Property="UIElement.IsEnabled" Value="False">
            <Setter TargetName="Bd" Property="Panel.Background" 
                    Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" />
            <Setter Property="TextElement.Foreground" 
                    Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/>
        </Trigger>
    </ControlTemplate.Triggers>
</ControlTemplate>
Run Code Online (Sandbox Code Playgroud)

您应该能够仅使用 ListBoxChrome 而不是 Border,而不是重新模板化 TextBox 以匹配您提供的代码。