powered by simpleCommunicator - 2.0.51     © 2025 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]