wpfuser-controlscustomproperty

DependencyProperty and UserControl in WPF


I created a UserControl with a Label and a Rectangle inside 2 grid rows. I added the property

public string SetText
{
    get
    {
        return (string)GetValue(mLabel.ContentProperty);
    }
    set
    {
        SetValue(mLabel.ContentProperty, value);
    }
}

Usage of the property

<local:PlayerMiniImage SetText="Player 1" ...

When I used the property, the font of the label changed and the rectangle disappeared Have any idea?


Solution

  • If you define a UserControl...

    <UserControl x:Class="...">
        <Border>
            <!-- ... -->
        </Border>
    </UserControl>
    

    Then everything inside it, here a Border, is the Content, hence if you set the ContentProperty everything will be replaced.


    To set the label content create a new DP:

    public static readonly DependencyProperty LabelContentProperty =
        DependencyProperty.Register("LabelContent", typeof(object), typeof(MyUserControl), new UIPropertyMetadata(null));
    public object LabelContent
    {
        get { return (object)GetValue(LabelContentProperty); }
        set { SetValue(LabelContentProperty, value); }
    }
    

    and bind the label to it:

    <Label Content="{Binding LabelContent, RelativeSource={RelativeSource AncestorType=UserControl}}"/>