DependencyProperty и UserControl в WPF - PullRequest
       20

DependencyProperty и UserControl в WPF

0 голосов
/ 23 декабря 2011

Я создал UserControl с меткой и прямоугольником внутри 2 строк сетки.Я добавил свойство

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

Использование свойства

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

Когда я использовал это свойство, шрифт метки изменился, а прямоугольник исчез. Есть идеи?

1 Ответ

0 голосов
/ 23 декабря 2011

Если вы определите 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}}"/>
...