Я пытаюсь изменить стиль ярлыков динамически на своих формах. Поведение, которое я хочу: каждый раз, когда текстовое поле, называемое «txtName», например, получает Focused, оно должно искать элемент управления ярлыками с именем lblName и изменять его свойство FontWeight на «Bold».Изменение свойства другого элемента управления в триггере элемента управления с «динамическим» именем
То же самое для текстового поля под названием «txtBirthday» и ярлыка «lblBirthday», где «txt» обозначает TextBox и lbl для Label.
В каждом текстовом поле есть ИМЯ и префикс «txt» и префикс «lbl» для соответствующей метки, но если текстовое поле не находит метку соответствия, оно ничего не должно делать.
Другими словами, каждый раз, когда текстовое поле фокусируется на форме, оно должно искать метку «ответственно» для ее описания и замаскировать ее (изменяя ее размер шрифта до полужирного), чтобы форма была более удобной для пользователя. Таким образом, пользователь не запутается в текстовом поле, которое он вводит.
У меня есть код мира, который может быть хорошей стартовой точкой, но я не знаю, как работать с именами нестатического управления.
<Style TargetType="{x:Type Label}">
<Style.Triggers>
<!-- Here is how we bind to another control's property -->
<DataTrigger Binding="{Binding IsFocused, ElementName=txtUser}" Value="True">
<Setter Property="FontWeight" Value="Bold" />
<!-- Here is the 'override' content -->
</DataTrigger>
</Style.Triggers>
</Style>
Я не думаю, что вы сможете использовать переменные в XAML. Поместите обработчики событий на gotfocus и потеряли фокус. – Paparazzi
Является ли ваш пример упрощением более сложной настройки? Я бы не рекомендовал сопоставлять имена для изменения поведения - этот подход хрупкий и не масштабируется. Это другие встроенные альтернативы, которые являются более надежными (шаблоны управления, пользовательские элементы управления и т. Д.). –
@BalamBalam, Есть несколько элементов управления. У меня будет ОГРОМНАЯ работа, чтобы сделать это. Есть ли способ определить их во всем мире? –