WPF中的DependencyProperty和UserControl

时间:2011-12-23 14:40:39

标签: wpf user-controls customproperty

我在2个网格行中创建了一个带有Label和Rectangle的UserControl。 我添加了属性

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

使用属性

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

当我使用该属性时,标签的字体发生了变化,矩形消失了 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

如果您定义UserControl ......

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

然后其中的所有内容(Border都是Content,因此如果您设置ContentProperty,所有内容都将被替换。


要设置标签内容,请创建一个新的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); }
}

并将标签绑定到它:

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