我目前在下面创建了这个类。出于某种原因,虽然我无法访问我通过我的xaml风格创建的属性。
Public Class Ribbon : Inherits Button
Private mpopDropdown As Popup
Public Property Dropdown() As Popup
Get
Return mpopDropdown
End Get
Set(ByVal value As Popup)
mpopDropdown = value
End Set
End Property
...
End Class
<Style TargetType="{x:Type s:Ribbon}">
<Setter Property="Ribbon.Dropdown">
此时存在“无效的PropertyDescriptor值”错误。
如何才能使此属性可访问?
编辑:我也试过创建一个DependencyProperty
,因为我读过这可以解决我的问题,但似乎没有。
编辑2:我试过
Public Shared Readonly DropdownProperty as DependencyProperty = _
DependencyProperty.Register("Dropdown",GetType(Popup),GetType(Ribbon), _
New FrameworkPropertyMetadata(False))
和
Public Shared Readonly DropdownProperty as DependencyProperty = _
DependencyProperty.Register("Dropdown",GetType(Popup),GetType(Ribbon), _
New FrameworkPropertyMetadata(True))
但他们似乎也没有暴露财产。我还将该属性标记为<Bindable(True)>
,但似乎没有做任何事情。
有什么迹象表明我做错了什么?
答案 0 :(得分:1)
依赖属性应该确实解决您的问题。并且不要忘记命名空间即<Setter Property="s:Ribbon.Dropdown">
,尽管如果指定了TargetType
,则不必在setter中为属性指定类所有者。这意味着你可以写<Setter Property="Dropdown">
PS:您可能还会遇到通过样式设置视觉效果的另一个问题。 Read more。但那是另一个故事......
答案 1 :(得分:0)
我最后只是创建了一个单独的Popup样式,并在类的代码中设置了我的对象的样式,并设置了Popup的PlacementTarget = Me
。