Wpf带有嵌入式按钮的用户控件:更改按钮的内容

时间:2017-06-20 17:24:55

标签: c# wpf user-controls

我有一个简单的用户控件,里面有一个我修改过的按钮。

当我将此usercontrol添加到我的主窗口时,我只能访问usercontrol的属性。如何访问按钮内容?理想情况下,我想要一个自定义属性让我们说" TheText"我改变了它

<local:MyButtonControl TheText="My text here will be the button content">

这就是我在usercontrol中所拥有的&#34; MyButtonControl&#34;

public object TheText
        {
            get => (object)GetValue(_text);
            set => SetValue(_text, value);
        }
        public static readonly DependencyProperty _text =
            DependencyProperty.Register("Text", typeof(object), typeof(MyButton), new UIPropertyMetadata(null));

但是我应该为绑定做些什么呢?无法解决这个问题。这是关注的按钮。

<Button x:Name="button" Content="{Binding  ???  }" Style="{StaticResource RoundedButton}"/>

1 个答案:

答案 0 :(得分:1)

Binding应如下所示:

<Button Content="{Binding Text,
    RelativeSource={RelativeSource AncestorType=UserControl}}" .../>

请注意,正确的依赖项属性声明必须对依赖项属性和CLR包装器使用相同的名称。还有一个约定将标识符字段命名为<PropertyName>Property

public object Text
{
    get => (object)GetValue(TextProperty);
    set => SetValue(TextProperty, value);
}

public static readonly DependencyProperty TextProperty =
    DependencyProperty.Register("Text", typeof(object), typeof(MyButton));

您当然也应该使用string作为名为Text的属性的类型。或者你打电话给财产ButtonContent或类似的东西。