powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Установить цвет текста текстовой метки, если фокус установлен на соседний эдит
4 сообщений из 4, страница 1 из 1
Установить цвет текста текстовой метки, если фокус установлен на соседний эдит
    #39016237
Фотография Alexander63
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
<TextBlock x:Name="lblServer"
                   Grid.Row="1"
                   Grid.Column="1"
                   Text="Сервер" />
.......

<TextBox Name="edtServer"
                 Grid.Row="2"
                 Grid.Column="1"
                 Text="{Binding Path=Server}">
            <TextBox.Style>
                <Style>
                    <Style.Triggers>
                        <Trigger Property="TextBox.IsFocused" Value="True">
                            <Setter Property="TextBlock.Foreground" Value="Red" TargetName="lblServer" />
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </TextBox.Style>
        </TextBox>



Ругается на lblServer - не видит. Как побороть
...
Рейтинг: 0 / 0
Установить цвет текста текстовой метки, если фокус установлен на соседний эдит
    #39016287
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander63Ругается на lblServer - не видит. Как побороть
Никак - в стилевых триггерах через TargetName можно обращаться только к именованным частям темплейта.
Здесь нужно действовать в обратном направлении:
Код: 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.
<Grid Margin="10">
  <Grid.RowDefinitions>
    <RowDefinition Height="Auto"/>
    <RowDefinition />
  </Grid.RowDefinitions>
  <Grid.ColumnDefinitions>
    <ColumnDefinition Width="Auto" />
    <ColumnDefinition />
  </Grid.ColumnDefinitions>
  <TextBlock
    Text="LinkedControl: "
    VerticalAlignment="Center">
    <TextBlock.Style>
      <Style TargetType="{x:Type TextBlock}">
        <Style.Triggers>
          <DataTrigger Binding="{Binding ElementName=LinkedBox, Path=IsMouseOver}">
            <DataTrigger.Value>
              <sys:Boolean>True</sys:Boolean>
            </DataTrigger.Value>
            <Setter Property="Foreground" Value="Red" />
          </DataTrigger>
        </Style.Triggers>
      </Style>
    </TextBlock.Style>
  </TextBlock>
  <TextBox
    x:Name="LinkedBox"
    Grid.Column="1"/>
</Grid>


(в xmlns окна нужно объявить юзинг System из mscorlib: xmlns:sys="clr-namespace:System;assembly=mscorlib").
...
Рейтинг: 0 / 0
Установить цвет текста текстовой метки, если фокус установлен на соседний эдит
    #39016310
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот так будет канонично и универсально, с поддержкой AccessKey.
У Label, есть свойство Target, в котором можно указать, какой объект связан с меткой.
TextBlock\AccessText экономичнее чем Label, так как Label это ContentPresenter, но думаю, это не критично.

Код: 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.
<Window x:Class="WpfApplication25.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Window.Resources>
        <Style TargetType="{x:Type Label}">
            <Setter Property="Margin" Value="5"/>
            <Setter Property="VerticalAlignment" Value="Center"/>
            <Style.Triggers>
                <DataTrigger Binding="{Binding Target.IsKeyboardFocused, RelativeSource={RelativeSource Self}}" Value="True">
                    <Setter Property="TextElement.Foreground" Value="Red"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
        <Style TargetType="{x:Type TextBox}">
            <Setter Property="Margin" Value="5"/>
        </Style>
    </Window.Resources>
    <Grid Height="Auto" VerticalAlignment="Top">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition/>
        </Grid.RowDefinitions>
        <Label Content="_Name" 
               Grid.Column="0" Grid.Row="0" 
               Target="{Binding ElementName=Name}"  />
        <TextBox x:Name="Name" 
                Grid.Column="1" Grid.Row="0" />
        <Label Content="_Surname" 
               Grid.Column="0" Grid.Row="1" 
               Target="{Binding ElementName=Surname}" />
        <TextBox x:Name="Surname"  
                Grid.Column="1" Grid.Row="1"/>
    </Grid>
</Window>
...
Рейтинг: 0 / 0
Установить цвет текста текстовой метки, если фокус установлен на соседний эдит
    #39016325
Фотография Alexander63
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо всем откликнувшимся. Решил проблему сам следующим образом
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
.....
<TextBlock x:Name="lblServer"
                   Grid.Row="1"
                   Grid.Column="1"
                   Margin="1,1,0,1"
                   HorizontalAlignment="Left"
                   VerticalAlignment="Center"
                   FontFamily="Courier New"
                   FontSize="12"
                   FontWeight="Bold"
                   Text="Сервер">
            <TextBlock.Style>
                <Style>
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding ElementName=edtServer, Path=IsFocused}" Value="True">
                            <Setter Property="TextBlock.Foreground" Value="Red" />
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </TextBlock.Style>
        </TextBlock>
.....
 этот вариант похож на предложенный Сон Веры Павловны.
Еще раз всем спасибо. Пока каша в голове, но постепенно все приводится в порядок.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Установить цвет текста текстовой метки, если фокус установлен на соседний эдит
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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