кастомизация стиля контрола

216
03 июня 2017, 13:39

Есть некий контрол, а именно TextBox

И следующий прописанный мною стиль :

    <Style TargetType="{x:Type TextBox}" x:Key="SearchBox">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="TextBox">
                    <Border Background="{TemplateBinding Background}"
                                BorderThickness="1"
                                BorderBrush="Gray"
                                Name="Border">
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="*" />
                                <ColumnDefinition Width="24"/>
                            </Grid.ColumnDefinitions>
                            <TextBox Style="{x:Null}"
                                    Grid.Column="0"
                                    Text="{TemplateBinding Text}"
                                    Foreground="{TemplateBinding Foreground}"
                                    Background="{TemplateBinding Background}"
                                    FontFamily="{TemplateBinding FontFamily}"
                                    FontSize="{TemplateBinding FontSize}"
                                    FontWeight="{TemplateBinding FontWeight}"
                                     BorderThickness="0"/>

                            <Image Source="../UIResources/search.png"
                                   Width="{TemplateBinding Height}"
                                   Height="{TemplateBinding Height}"
                                   Focusable="False"
                                   Grid.Column="1"/>
                        </Grid>
                    </Border>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsKeyboardFocused" Value="True">
                            <Setter TargetName="Border" Property="BorderBrush" Value="LightGray"></Setter>
                        </Trigger>
                        <Trigger Property="IsFocused" Value="True">
                            <Setter TargetName="Border" Property="BorderBrush" Value="LightGray"></Setter>
                        </Trigger>
                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter TargetName="Border" Property="BorderBrush" Value="LightGray"></Setter>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

Проблема в том что когда TextBox не в фокусе, на нем нету курсора мышки и он не зафокушен клавиатурой, но внутри него стоит каретка, он не меняет цвет Border

Answer 1

Решилось следующим способом :

                    <Trigger Property="IsKeyboardFocusWithin" Value="True">
                        <Setter TargetName="Border" Property="BorderBrush" Value="LightGray"></Setter>
                    </Trigger>
READ ALSO
Первый элемент ComboBox

Первый элемент ComboBox

Допустим у меня есть некий ComboBox, у которого будет задача не по назначениюДопустим первый элемент этого ComboBox должен быть всегда надпись "Выберите...

258
Проверить заполнение ListBox C#

Проверить заполнение ListBox C#

В общем, есть ListBox, мне нужно проверить, если в нем есть элементы, то должна выполниться функция, если он пустой, то ничего не должно происходить

263
WPF Entity Невозможно добавить запись в таблицу

WPF Entity Невозможно добавить запись в таблицу

Необработанное исключение типа "SystemData

291
Применение string.Empty

Применение string.Empty

Зачем применять stringEmpty, или в чем его отличие от ""? И в том, и в другом случаях результат - пустая строка

212