Public Class UITreeview
Inherits System.Windows.Controls.TreeView
Public Shared ExpandAllproperty As DependencyProperty
Shared Sub New()
DefaultStyleKeyProperty.OverrideMetadata(GetType(UITreeview), New FrameworkPropertyMetadata(GetType(UITreeview)))
UITreeview.ExpandAllproperty = UITreeViewItem.IsExpandedProperty.AddOwner(GetType(UITreeview), New FrameworkPropertyMetadata(True, FrameworkPropertyMetadataOptions.Inherits))
End Sub
Public Property ExpandAll As Boolean
Get
Return Me.GetValue(ExpandAllproperty)
End Get
Set(value As Boolean)
Me.SetValue(ExpandAllproperty, value)
End Set
End Property
....
End Class
我创建了自己的依赖项属性,我使用样式
设置<Style TargetType="{x:Type UINat:UITreeview}">
<Setter Property="ExpandAll" Value="False" />
</Style>
但不幸的是我收到了一个错误:
System.ArgumentNullException:值不能为null。参数名称:property。
我的目标是从资源XAML控制TreeviewItem.IsExpanded属性。
答案 0 :(得分:0)
您无法通过向现有依赖项属性ExpandAll
添加所有者类型来创建新的依赖项属性IsExpanded
。
使用Register代替AddOwner注册新属性:
Public Shared ReadOnly ExpandAllproperty As DependencyProperty =
DependencyProperty.Register(
"ExpandAll", GetType(Boolean), GetType(UITreeView),
New FrameworkPropertyMetadata(True, FrameworkPropertyMetadataOptions.Inherits))