Установить изображение границы для текстового поля в фокусе - PullRequest
1 голос
/ 28 февраля 2012

Я хочу установить изображение как границу, когда текстовое поле имеет фокус.Я знаю, как установить цвет границы, когда текстовое поле получает фокус, следующим образом

<Style  TargetType="{x:Type TextBox}">
            <Style.Triggers>
                <Trigger Property="IsFocused" Value="True">
                    <Setter Property="BorderThickness" Value="2.20" />
                    <Setter Property="BorderBrush"  Value="#f8cb1c" />
                </Trigger>
            </Style.Triggers>
        </Style>

, но как мне установить изображение для рамки или вокруг текстового поля.

Ответы [ 2 ]

2 голосов
/ 28 февраля 2012
<Style x:Key="TextBoxStyle1" BasedOn="{x:Null}" TargetType="{x:Type TextBox}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type TextBox}">
                    <Microsoft_Windows_Themes:ListBoxChrome x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" RenderMouseOver="{TemplateBinding IsMouseOver}" RenderFocused="{TemplateBinding IsKeyboardFocusWithin}" SnapsToDevicePixels="true">
                        <Grid>
                            <Image x:Name="imgctrl" Stretch="Fill"/>
                            <ScrollViewer x:Name="PART_ContentHost" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
                        </Grid>
                    </Microsoft_Windows_Themes:ListBoxChrome>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsEnabled" Value="false">
                            <Setter Property="Background" TargetName="Bd" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/>
                            <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
                        </Trigger>
                        <Trigger Property="IsFocused" Value="True">
                            <Setter Property="Source" TargetName="imgctrl" Value="5.jpg"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
1 голос
/ 28 февраля 2012

Я бы скрыл границу TextBox по умолчанию и поместил бы ее поверх Image, содержащей желаемое изображение границы, и показал бы Image, когда выбран TextBox

<Style x:Key="BorderImageStyle" TargetType="{x:Type Image}">
    <Setter Property="IsVisible" Value="False" />
    <Style.Triggers>
        <DataTrigger Binding="{Binding ElementName=SomeTextBox, Path=IsKeyboardFocusWithin}" Value="True">
            <Setter Property="IsVisible" Value="True" />
        </DataTrigger>
</Style>


<Grid>
    <Image x:Name="BorderImage" ... />
    <TextBox x:Name="SomeTextBox" BorderThickness="0" Margin="20" ... />
</Grid>
...