Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Установить цвет текста текстовой метки, если фокус установлен на соседний эдит / 4 сообщений из 4, страница 1 из 1
26.07.2015, 22:23
    #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
27.07.2015, 07:03
    #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
27.07.2015, 08:47
    #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
27.07.2015, 09:10
    #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
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Установить цвет текста текстовой метки, если фокус установлен на соседний эдит / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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