簡體   English   中英

如何公開屬於用戶控件的控件的屬性(DependencyProperty)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM