我有一个简单的用户控件,里面有一个我修改过的按钮。
当我将此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}"/>
答案 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
或类似的东西。