I have a user control (x:Name=UserControl1) which i have used in another control(x:Name=UserControl2). Now when a check box present in UserControl2 gets set then only UserControl1 get enabled. I want to set the focus to some particular text box present in UserControl1 when ever it get enabled. Is there any event or anything thru which UserControl1 gets to know that its enabled state is changed to 1?
0
votes
2 Answers
2
votes
Firstly, as the previous answer states, IsEnabled is a dependency property, so you can set up a binding to do something when that changes. You say "it is required so that it can set the focus to some particular control present in it", in this case you might want to set a binding on a property of the child control (eg IsFocused).
If you have some particular logic you need, you can always set up your own dependency property, bind that to IsEnabled, and set your custom logic in the changed handler. Or to do basically the same thing without setting up a fresh dependency property, you can add your own changed handler to IsEnabled with AddOwner:
UIElement.IsEnabledProperty.AddOwner(typeof(MyUserControl), new FrameworkPropertyMetadata(OnIsEnabledChanged));
public static void OnIsEnabledChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
((MyUserControl)d).DoSomething();
}