Гость
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Клонировать цвет с одного Setter на другой / 5 сообщений из 5, страница 1 из 1
25.11.2018, 17:52
    #39738218
PinGT
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Клонировать цвет с одного Setter на другой
Доброго времени!
Стандартный стиль textbox'а
Нужно клонировать цвет чтоб при редактировании компонента он менялся во всех указанных местах.

Заранее благодарю!
...
Рейтинг: 0 / 0
25.11.2018, 19:15
    #39738238
Eld Hasp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Клонировать цвет с одного Setter на другой
PinGTДоброго времени!
Стандартный стиль textbox'а
Нужно клонировать цвет чтоб при редактировании компонента он менялся во всех указанных местах.

Заранее благодарю!Как я понял автора (в том числе из общения на другом форуме), он хочет связать цвет бордюров при фокусе и наведении курсора с кистью в свойстве SelectionBrush. Для того, чтобы при объявлении TextBox, изменив кисть SelectionBrush, у бордюров установилась эта же кисть.
...
Рейтинг: 0 / 0
25.11.2018, 19:46
    #39738244
PinGT
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Клонировать цвет с одного Setter на другой
Eld Hasp, В точку!
...
Рейтинг: 0 / 0
26.11.2018, 10:22
    #39738383
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Клонировать цвет с одного Setter на другой
Eld HaspPinGTДоброго времени!
Стандартный стиль textbox'а
Нужно клонировать цвет чтоб при редактировании компонента он менялся во всех указанных местах.

Заранее благодарю!Как я понял автора (в том числе из общения на другом форуме), он хочет связать цвет бордюров при фокусе и наведении курсора с кистью в свойстве SelectionBrush. Для того, чтобы при объявлении TextBox, изменив кисть SelectionBrush, у бордюров установилась эта же кисть.
Так а в чем проблема? Забиндить Value сеттера на нужное свойство TemplatedParent (использование TemplateBinding здесь не прокатит - будет ArgumentException: Expression type is not a valid Style value).
Как-то так:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
<Window
  x:Class="wpftest2.MainWindow"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  mc:Ignorable="d"
  WindowStartupLocation="CenterScreen"
  WindowStyle="SingleBorderWindow"
  Title="MainWindow" Height="600" Width="800">

  <Window.Resources>
    <Style TargetType="{x:Type TextBox}" x:Key="MyTextBox">
      <Setter Property="SelectionBrush" Value="{DynamicResource {x:Static SystemColors.InactiveSelectionHighlightBrushKey}}" />
      <Setter Property="BorderBrush" Value="#808080" />
      <Setter Property="VerticalAlignment" Value="Center" />
      <Setter Property="Margin" Value="5" />
      <Setter Property="OverridesDefaultStyle" Value="True" />
      <Setter Property="Template">
        <Setter.Value>
          <ControlTemplate TargetType="{x:Type TextBox}">
            <Border
              x:Name="Border"
              BorderBrush="{TemplateBinding BorderBrush}"
              BorderThickness="1">
              <ScrollViewer
                x:Name="PART_ContentHost"
                Focusable="False"
                HorizontalScrollBarVisibility="Hidden"
                VerticalScrollBarVisibility="Auto" />
            </Border>
            <ControlTemplate.Triggers>
              <Trigger Property="IsMouseOver" Value="True">
                <Setter
                  TargetName="Border"
                  Property="BorderBrush"
                  Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=SelectionBrush}" />
              </Trigger>
              <Trigger Property="IsKeyboardFocused" Value="True">
                <Setter
                  TargetName="Border"
                  Property="BorderBrush"
                  Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=SelectionBrush}" />
              </Trigger>
            </ControlTemplate.Triggers>
          </ControlTemplate>
        </Setter.Value>
      </Setter>
    </Style>
  </Window.Resources>
  <Grid>
    <Grid.RowDefinitions>
      <RowDefinition />
      <RowDefinition />
      <RowDefinition />
    </Grid.RowDefinitions>
    <TextBox
      Style="{StaticResource MyTextBox}"
      Text="Source template" />
    <TextBox
      Grid.Row="1"
      Style="{StaticResource MyTextBox}"
      SelectionBrush="Red"
      Text="Red selection" />
    <TextBox
      Grid.Row="2"
      Style="{StaticResource MyTextBox}"
      SelectionBrush="Green"
      Text="Green selection" />
  </Grid>
</Window>
...
Рейтинг: 0 / 0
26.11.2018, 22:21
    #39738831
PinGT
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Клонировать цвет с одного Setter на другой
Сон Веры Павловны, Благодарю!
...
Рейтинг: 0 / 0
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Клонировать цвет с одного Setter на другой / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]