2016-07-26 50 views
1

我有一个依赖属性的用户控件是一个枚举。我绑定到它并将其设置在主窗口视图中,但它不会更改。枚举依赖属性永远不会从视图更新

这是用户控件和图标是枚举

<local:GoogleMaterialIcon Icon="AccountBalance"/> 

这里是枚举

public enum Icon 
{ 
    _3DRotation, 
    Accessibility 
}; 

这里是DP

/// <summary> 
    /// Dependency Property used to back the <see cref="Icon"/> Property 
    /// </summary> 
    public static readonly DependencyProperty IconProperty = 
     DependencyProperty.Register("Icon", 
      typeof(Icon), 
      typeof(GoogleMaterialIcon), 
      new PropertyMetadata(null)); 

最后的财产

public Icon Icon 
{ 
    get { return (Icon)GetValue(IconProperty); } 
    set 
    { 
     SetValue(IconProperty, value); 
    } 
} 

我在设置图标中放置了一个断点,但它永远不会运行。枚举也在它自己的文件中。我每次运行它表明我错了图标,因为DP恢复到第一个枚举和永远不会更新

更新:背后

public partial class GoogleMaterialIcon : UserControl 
{ 
    /// <summary> 
    /// Dependency Property used to back the <see cref="Icon"/> Property 
    /// </summary> 
    public static readonly DependencyProperty IconProperty = 
     DependencyProperty.Register("Icon", 
      typeof(Icon), 
      typeof(GoogleMaterialIcon), 
      new PropertyMetadata(null)); 


    /// <summary> 
    /// Constructor 
    /// </summary> 
    public GoogleMaterialIcon() 
    { 
     InitializeComponent(); 
    } 

    /// <summary> 
    /// Select a predefined icon to use 
    /// </summary> 
    public Icon Icon 
    { 
     get { return (Icon)GetValue(IconProperty); } 
     set 
     { 
      SetValue(IconProperty, value); 
     } 
    } 
} 
+0

添加了usercontrol的后面代码。我不使用视图中的属性呢。这个想法是在你缺少PropertyChanged-Event的'PropertyMetadata'中的图标 – Sam

+0

的设置器中执行某些操作。哦,你实际上应该**将你的财产绑定到正确的类型。不仅设置字符串 – lokusking

+0

我不必正常添加。这是一个特殊的枚举? – Sam

回答

1

Obviosly下,一些用户控件的完整代码 - 至少对我来说 - 怪情况下,即使Microsoft只有解决方案而不是解释。

在你PropertyMetadata你缺少的PropertyChanged - 活动

不幸发生了什么在这里,我不能在深,解释。但使用PropertyChanged-DependencyProperty的事件似乎对我来说是一个可接受的解决方法。

+0

该属性改变了事件的作品,你可以把它作为一个答案,我会标记它的问题谢谢,只是为了清楚起见,我尝试了正面的价值,它不幸的工作 – Sam