cKNet cKNet - 4 months ago 23
C# Question

How to add Custom Properties to WPF User Control

I've my own User Control including a few buttons and etc.

I use this code to bring that UC to screen.

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

I've added two property like Property1 and Property2 to XXXX user control. And changed my code with

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

When I add this 2 parameters to XAML page, system throws an exception like "The member 'Property1' is not recognized or is not accesiable"

Here is my UC code.

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()

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); }

Can you help me with doing that?
Thank you so much!


You can use this declaration for your 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( 
          typeof( bool ), 
          typeof( XXXX ), 
          new PropertyMetadata( false ) 

This snippet can be found in Visual Studio if you type "propdp" and then Tab twice. You'll need to fill the DependencyProperty's type, the name of the DependencyProperty, the class that contains it and the default value for that DependencyProperty (in my example, I put false as default.