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

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

Заранее благодарю!Как я понял автора (в том числе из общения на другом форуме), он хочет связать цвет бордюров при фокусе и наведении курсора с кистью в свойстве SelectionBrush. Для того, чтобы при объявлении TextBox, изменив кисть SelectionBrush, у бордюров установилась эта же кисть.
...
Рейтинг: 0 / 0
Клонировать цвет с одного Setter на другой
    #39738244
PinGT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Eld Hasp, В точку!
...
Рейтинг: 0 / 0
Клонировать цвет с одного Setter на другой
    #39738383
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Клонировать цвет с одного Setter на другой
    #39738831
PinGT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сон Веры Павловны, Благодарю!
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Клонировать цвет с одного Setter на другой
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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