Как узнать, включен ли пользовательский элемент управления WPF? - PullRequest
0 голосов
/ 10 июня 2011

У меня есть пользовательский элемент управления (x: Name = UserControl1), который я использовал в другом элементе управления (x: Name = UserControl2).Теперь, когда установлен флажок в UserControl2, включается только UserControl1.Я хочу установить фокус на какое-то конкретное текстовое поле, присутствующее в UserControl1, когда оно будет включено.Есть ли какое-либо событие или что-то, через что UserControl1 узнает, что его включенное состояние изменено на 1?

Ответы [ 2 ]

1 голос
/ 13 июня 2011

Во-первых, как указано в предыдущем ответе, IsEnabled является свойством зависимости, поэтому вы можете настроить привязку, чтобы что-то делать, когда это изменится. Вы говорите: «Требуется, чтобы он мог установить фокус на какой-то конкретный элемент управления, присутствующий в нем», в этом случае вам может потребоваться установить привязку к свойству дочернего элемента управления (например, IsFocused).

Если у вас есть какая-то конкретная логика, которая вам нужна, вы всегда можете установить собственное свойство зависимости, связать его с IsEnabled и установить свою собственную логику в измененном обработчике. Или, в принципе, сделать то же самое без установки нового свойства зависимости, вы можете добавить свой собственный измененный обработчик в IsEnabled с помощью AddOwner:

UIElement.IsEnabledProperty.AddOwner(typeof(MyUserControl), new FrameworkPropertyMetadata(OnIsEnabledChanged));
public static void OnIsEnabledChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
    ((MyUserControl)d).DoSomething();
}
0 голосов
/ 10 июня 2011

Свойство IsEnabled класса UserControl является свойством зависимости, что означает, что вы можете связать его со свойством по вашему выбору и подключиться к нему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...