2011-06-10 112 views
0

我有一個用戶控件(x:Name = UserControl1),這是我在另一個控件(x:Name = UserControl2)中使用的。現在當UserControl2中的複選框被設置時,只有UserControl1被啓用。我想將焦點設置爲UserControl1中的某個特定文本框,只要它啓用。是否有任何事件或任何通過UserControl1得知其啓用狀態變爲1的事件?如何知道WPF用戶控件是否被啓用?

+0

我發現,解決我的問題的替代方案(採用了不同的方法)。但仍然歡迎回答。 – 2011-06-10 07:39:10

回答

0

首先,正如前面的答案所述,IsEnabled是一個依賴項屬性,因此您可以設置一個綁定,以便在發生更改時執行某些操作。你說「這是必須的,以便它可以將焦點設置在某個特定的控件中」,在這種情況下,您可能想要在子控件的屬性上設置綁定(例如IsFocused)。

如果您有一些您需要的特定邏輯,您可以始終設置您自己的依賴項屬性,將其綁定到IsEnabled,然後在更改的處理程序中設置您的自定義邏輯。還是做基本沒有建立一個新的依賴屬性同樣的事情,你可以自己改變處理與AddOwner添加到IsEnabled

UIElement.IsEnabledProperty.AddOwner(typeof(MyUserControl), new FrameworkPropertyMetadata(OnIsEnabledChanged)); 
public static void OnIsEnabledChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) 
{ 
    ((MyUserControl)d).DoSomething(); 
} 
0

UserControl類的IsEnabled屬性是一個依賴項屬性,這意味着您可以將它綁定到您選擇的屬性並掛接到那裏。

+0

對。我可以綁定UserControl2的xaml內的usercontrol1的IsEnabled屬性。但在這裏我想知道內部usercontrol1,如果它(usercontrol1)被啓用。並且它是必需的,以便它可以將焦點集中到其中存在的某種特定控制。 – 2011-06-10 07:24:54

相關問題