2010-02-18 73 views
0

我目前创建了下面的类。出于某种原因,尽管我无法访问通过我的xaml样式创建的属性。访问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"> 

此时出现“Invalid PropertyDescriptor value”错误。

我该怎么做才能使这个属性可访问?

编辑:我曾尝试创建一个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

我最终创建了一个单独的弹出式样式,并在课程代码中设置了我的对象样式并设置了弹出式对话框PlacementTarget = Me

1

依赖属性应该确实解决您的问题。并且不要忘记命名空间,即<Setter Property="s:Ribbon.Dropdown">,但如果您指定了TargetType,则不必为setter中的属性指定类所有者。这意味着你可以写<Setter Property="Dropdown">

PS:你也可能遇到另一个问题,通过样式设置视觉效果。 Read more。但这是另一个故事...