如何将自定义属性添加到WPF用户控件

时间:2014-09-17 15:46:23

标签: c# wpf

我自己的用户控件包括几个按钮等。

我使用此代码将该UC带入屏幕。

<AppUI:XXXX x:Name="ucStaticBtns" HorizontalAlignment="Left" Margin="484,0,0,0" VerticalAlignment="Top" Width="68" />

我已将两个属性(如Property1和Property2)添加到XXXX用户控件。并用

更改了我的代码
<AppUI:XXXX x:Name="ucStaticBtns" HorizontalAlignment="Left" Margin="484,0,0,0" VerticalAlignment="Top" Width="68" Property1="False" Property2="False"/>

当我将这2个参数添加到XAML页面时,系统会抛出一个例外,例如&#34;会员&#39; Property1&#39;无法识别或无法访问&#34;

这是我的UC代码。

 public partial class XXXX : UserControl
    {
        public event EventHandler CloseClicked;
        public event EventHandler MinimizeClicked;
        //public bool ShowMinimize { get; set; }
        public static DependencyProperty Property1Property;
        public static DependencyProperty Property2Property;
        public XXXX()
        {
            InitializeComponent();
        }

        static XXXX()
        {
            Property1Property = DependencyProperty.Register("Property1", typeof(bool), typeof(XXXX));
            Property2Property = DependencyProperty.Register("Property2", typeof(bool), typeof(XXXX));
        }

        public bool Property1
        {
            get { return (bool)base.GetValue(Property1Property); }
            set { base.SetValue(Property1Property, value); }
        }

        public bool Property2
        {
            get { return (bool)base.GetValue(Property2Property); }
            set { base.SetValue(Property2Property, value); }
        }
}
你可以帮我这么做吗? 非常感谢你!

2 个答案:

答案 0 :(得分:32)

您可以将此声明用于DependencyProperties:

public bool Property1
{
    get { return ( bool ) GetValue( Property1Property ); }
    set { SetValue( Property1Property, value ); }
}

// Using a DependencyProperty as the backing store for Property1.  
// This enables animation, styling, binding, etc...
public static readonly DependencyProperty Property1Property 
    = DependencyProperty.Register( 
          "Property1", 
          typeof( bool ), 
          typeof( XXXX ), 
          new PropertyMetadata( false ) 
      );

如果您键入“propdp”然后 Tab Tab ,则可以在Visual Studio中找到此代码段。您需要填充DependencyProperty的类型,DependencyProperty的名称,包含它的类以及该DependencyProperty的默认值(在我的示例中,我将false作为默认值)。

答案 1 :(得分:1)

您可能没有正确宣布DependencyProperty。您可以在MSDN的Dependency Properties Overview页面中找到有关如何创建DependencyProperty的完整详细信息,但简而言之,它们看起来像这样(取自链接页面):

public static readonly DependencyProperty IsSpinningProperty = 
    DependencyProperty.Register(
    "IsSpinning", typeof(Boolean),
...
    );

public bool IsSpinning
{
    get { return (bool)GetValue(IsSpinningProperty); }
    set { SetValue(IsSpinningProperty, value); }
}

您可以在MSDN上的DependencyProperty Class页面找到更多帮助。