mirror of
https://github.com/Stone-Red-Code/docs-desktop.git
synced 2026-09-07 07:56:07 +02:00
Add article, snippets, toc, and redirects (#1233)
This commit is contained in:
+100
@@ -0,0 +1,100 @@
|
||||
Namespace CodeSampleVb
|
||||
|
||||
' <summary>
|
||||
' Interaction logic for MainWindow.xaml.
|
||||
' </summary>
|
||||
Partial Public Class MainWindow
|
||||
Inherits Window
|
||||
|
||||
Public Sub New()
|
||||
InitializeComponent()
|
||||
DependencyPropertyAccessTests()
|
||||
End Sub
|
||||
|
||||
'<DependencyPropertyAccessTests>
|
||||
''' <summary>
|
||||
''' ' Test get/set access to dependency properties exposed through the WPF property system.
|
||||
''' </summary>
|
||||
Public Shared Sub DependencyPropertyAccessTests()
|
||||
' Instantiate a class that implements read-write and read-only dependency properties.
|
||||
Dim _aquarium As New Aquarium()
|
||||
' Access each dependency property using the LocalValueEnumerator method.
|
||||
Dim localValueEnumerator As LocalValueEnumerator = _aquarium.GetLocalValueEnumerator()
|
||||
While localValueEnumerator.MoveNext()
|
||||
Dim dp As DependencyProperty = localValueEnumerator.Current.[Property]
|
||||
Dim dpType As String = If(dp.[ReadOnly], "read-only", "read-write")
|
||||
' Test read access.
|
||||
Debug.WriteLine($"Attempting to get a {dpType} dependency property value...")
|
||||
Debug.WriteLine($"Value ({dpType}): {CInt(_aquarium.GetValue(dp))}")
|
||||
' Test write access.
|
||||
Try
|
||||
Debug.WriteLine($"Attempting to set a {dpType} dependency property value to 2...")
|
||||
_aquarium.SetValue(dp, 2)
|
||||
Catch e As InvalidOperationException
|
||||
Debug.WriteLine(e.Message)
|
||||
Finally
|
||||
Debug.WriteLine($"Value ({dpType}): {CInt(_aquarium.GetValue(dp))}")
|
||||
End Try
|
||||
End While
|
||||
|
||||
' Test output
|
||||
|
||||
' Attempting to get a read-write dependency property value...
|
||||
' Value (read-write): 1
|
||||
' Attempting to set a read-write dependency property value to 2...
|
||||
' Value (read-write): 2
|
||||
|
||||
' Attempting to get a read-only dependency property value...
|
||||
' Value (read-only): 1
|
||||
' Attempting to set a read-only dependency property value to 2...
|
||||
' 'FishCountReadOnly' property was registered as read-only
|
||||
' and cannot be modified without an authorization key.
|
||||
' Value (read-only): 1
|
||||
End Sub
|
||||
|
||||
End Class
|
||||
|
||||
Public Class Aquarium
|
||||
Inherits DependencyObject
|
||||
|
||||
Public Sub New()
|
||||
' Assign locally-set values.
|
||||
SetValue(FishCountProperty, 1)
|
||||
SetValue(FishCountReadOnlyPropertyKey, 1)
|
||||
End Sub
|
||||
|
||||
' Failed attempt to restrict write-access by assigning the
|
||||
' DependencyProperty identifier to a non-public field.
|
||||
Private Shared ReadOnly FishCountProperty As DependencyProperty =
|
||||
DependencyProperty.Register(
|
||||
name:="FishCount",
|
||||
propertyType:=GetType(Integer),
|
||||
ownerType:=GetType(Aquarium),
|
||||
typeMetadata:=New PropertyMetadata())
|
||||
|
||||
' Successful attempt to restrict write-access by assigning the
|
||||
' DependencyPropertyKey to a non-public field.
|
||||
Private Shared ReadOnly FishCountReadOnlyPropertyKey As DependencyPropertyKey =
|
||||
DependencyProperty.RegisterReadOnly(
|
||||
name:="FishCountReadOnly",
|
||||
propertyType:=GetType(Integer),
|
||||
ownerType:=GetType(Aquarium),
|
||||
typeMetadata:=New PropertyMetadata())
|
||||
|
||||
' Declare public get accessors.
|
||||
Public ReadOnly Property FishCount As Integer
|
||||
Get
|
||||
Return GetValue(FishCountProperty)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Public ReadOnly Property FishCountReadOnly As Integer
|
||||
Get
|
||||
Return GetValue(FishCountReadOnlyPropertyKey.DependencyProperty)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
End Class
|
||||
'</DependencyPropertyAccessTests>
|
||||
|
||||
End Namespace
|
||||
Reference in New Issue
Block a user