我正在尝试理解XAML和代码隐藏如何相互通信。我知道代码隐藏可以使用Name属性访问在XAML中实例化的元素,例如:
在XAML中实例化按钮:
<SomeControlParent controlParent>
<Button Name=button1/>
<SomeControlParent controlParent>
更改代码隐藏中按钮的属性:
button1.Content = "I created this button in XAML"
我想知道是否有可能使用XAML做相反的事情,例如:
在代码隐藏中实例化按钮:
Button button1 = new Button();
controlParent.Child.Add(button1);
然后使用XAML更改按钮的内容。
谢谢! Soumaya姓氏
答案 0 :(得分:3)
使用代码隐藏功能可以引用在XAML中定义了x:Name的元素。转向另一个方向,您可以在UserControl上定义属性,然后使用RelativeSource绑定在XAML中引用它们:
{Binding MyProperty, RelativeSource={RelativeSource Self}}
因此,在您的示例中,您可以在UserControl上拥有一个属性(尽管您可能希望它是一个依赖项属性,因此您有更改通知):
public Button Button1 { get; private set; }
然后使用以下命令将其插入XAML:
<ContentControl Content={Binding Button1, RelativeSource={RelativeSource Self}}>
<ContentControl.Resources>
<Style TargetType="Button">
<Setter Property="Content" Value="Hey, I changed the name in XAML!"/>
</Style>
</ContentControl.Resources>
</ContentControl>