使用XAML添加控件,但使用代码隐藏实例化

时间:2011-12-14 17:33:38

标签: wpf xaml code-behind instantiation

我正在尝试理解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姓氏

1 个答案:

答案 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>