이렇게 선언 된 DependencyProperty가 있습니다.종속성을 처리하는 방법 이미 등록 된 속성
Public ReadOnly ShowHideAddButtonProperty As DependencyProperty = DependencyProperty.Register("ShowHideAddButton", GetType(Boolean), GetType(DataNavigator), New FrameworkPropertyMetadata(True, FrameworkPropertyMetadataOptions.AffectsRender, New PropertyChangedCallback(AddressOf OnShowHideAddButtonChanged)))
그것은 내가 짓고 있어요 독립의 UserControl의 일부를 형성 (모두가 미래에 나에게 도움이 될 것 때문에 배울 수있는 좋은 방법이기 때문). 컨트롤이 프로젝트에 처음 추가되고 프로젝트가 제대로 실행되면, 그 후에 'ShowHideAddButton'속성이 'MyControl'에 의해 이미 등록되었다는 메시지와 함께 ArguementException을 던집니다.
그래서 종속성 등록을 등록 해제 할 가능성을 찾기 시작했는데 이것이 좋은 생각이 아닌 것처럼 보입니다. 이것으로 두 가지 질문이 생깁니다.
더 명확하게하기 위해 아래의 대답에 비추어 볼 때 종속성 속성과 관련된 전체 코드가 있습니다. Shared 메소드를 생성하면 'ShowHideAddButton'과 'Add'가 내 코멘트에서 언급 한 것과 같은 오류를 응답에 던집니다.
Public Shared ReadOnly ShowHideAddButtonProperty As DependencyProperty = DependencyProperty.Register("ShowHideAddButton", GetType(Boolean), GetType(DataNavigator), New FrameworkPropertyMetadata(True, FrameworkPropertyMetadataOptions.AffectsRender, New PropertyChangedCallback(AddressOf OnShowHideAddButtonChanged)))
'''////////////////////////////////////////////////////////////////////////////////////////////////////
''' <summary>
''' Gets or sets a value indicating whether the hide add button is shown.
''' </summary>
'''
''' <value> true if show hide add button, false if not. </value>
'''////////////////////////////////////////////////////////////////////////////////////////////////////
<Description("Set the visibility of the Add button on the Navigator Control"), Category("Navigator Buttons Visibility")>
Public Property ShowHideAddButton As Boolean
Get
Return CBool(GetValue(ShowHideAddButtonProperty))
End Get
Set(ByVal value As Boolean)
SetValue(ShowHideAddButtonProperty, value)
End Set
End Property
Private Shared Sub OnShowHideAddButtonChanged()
If ShowHideAddButton = True Then 'this now throws an error as well as Add below
Add.Visibility = Windows.Visibility.Visible 'Add being the button whose visibility is to be changed
Else
Add.Visibility = Windows.Visibility.Collapsed
End If
End Sub
1) 왜이 오류가 아마 내 원래의 코드에서 오류이지만 오류없이 컴파일로 나는 그것이가 무엇인지 잘 모르겠어요 ... 처음에 발생?
2) 문제가되는 오류를 잡기 위해 try Catch 블록에 문제가되는 줄을 감싸는 것만으로도 충분하지만 문제를 실제로 해결하지 못하거나 처음에 왜 발생했는지 알려주면 충분합니다.
몇 가지 추가 정보 :
그것은 별도의 버튼과 텍스트 상자의 숫자로 구성하고,이 문제의 경우에 DependencyProperty에 ShowHideAddButton가 있습니다 :
이실제 컨트롤이 달리하지 보인다 DataNavigator 컨트롤의 속성이지만 컨트롤의 AddButton이라는 Button의 표시 여부를 트리거해야합니다. 내 문제는 해당 버튼을 참조하는 방법을 알아 내려고합니다.
감사
아니요. 5 개의 유사한 속성이 있지만 이름이 다릅니다. 코드가 겹쳐서 코드가 중복되지 않도록 확인했습니다. –