[英]How do you expose a property (DependencyProperty) of a control that is part of a user control
我向正在創建的用戶控件中添加了一些自定義按鈕。 在這些按鈕中的某些按鈕上,我想向最終用戶公開其可見性屬性,以允許他們決定是否希望它們可見。 如何做到這一點?
謝謝
如果要從按鈕派生自定義/用戶控件,則可見性屬性應直接在xaml中可用,而無需進行任何更改。 但是,如果要創建依賴項屬性,則可以采用這種方法
public bool ShowHide
{
get { return (bool)GetValue(ShowHideProperty); }
set { SetValue(ShowHideProperty, value); }
}
public static readonly DependencyProperty ShowHideProperty = DependencyProperty.Register("ShowHide", typeof(bool), typeof(MyControl), new PropertyMetadata(true,OnShowHideChanged));
private static void OnShowHideChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
MyControl c = d as MyControl;
if(c!=null)
{
if((bool)e.NewValue == true)
{
c.Visibility = Visibility.Visible
}
else
{
c.Visibility = Visibility.Collapsed;
}
}
}
在您的xaml中,您可以
<controls:MyControl ShowHide="true" ..../>
編輯VB轉換
Public Shared ReadOnly ShowHideProperty As DependencyProperty = DependencyProperty.Register("ShowHide", GetType(Boolean), GetType(MyClass), New FrameworkPropertyMetadata(False, FrameworkPropertyMetadataOptions.AffectsRender, New PropertyChangedCallback(AddressOf onShowHideChanged)))
Public Property ShowHide() As Boolean
Get
Return CBool(GetValue(ShowHideProperty))
End Get
Set(ByVal value As Boolean)
SetValue(ShowHideProperty, value)
End Set
End Property
以下是完整的vb代碼
Public ReadOnly ShowHideFirstButtonProperty As DependencyProperty = DependencyProperty.Register("ShowHideFirstButton", GetType(Boolean), GetType(DataNavigator), New FrameworkPropertyMetadata(True, FrameworkPropertyMetadataOptions.AffectsRender, New PropertyChangedCallback(AddressOf onShowHideFirstButtonChanged)))
Public Property ShowHideFirstButton As Boolean
Get
Return CBool(GetValue(ShowHideFirstButtonProperty))
End Get
Set(ByVal value As Boolean)
SetValue(ShowHideFirstButtonProperty, value)
End Set
End Property
Private Sub OnShowHideFirstButtonChanged()
If ShowHideFirstButton Then
First.Visibility = Windows.Visibility.Visible 'First being the button whose visibility is to be changed
Else
First.Visibility = Windows.Visibility.Collapsed
End If
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.