内容元素绑定到属性

时间:2010-11-25 10:04:25

标签: c# wpf binding

我正在尝试将一个<Menu>元素绑定到dependencyProperty的窗口:

这是我的Xaml:

<Window x:Class="attachement.xWindow"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <Menu/>
        <ToolBarTray x:Name="ToolBarTray" Grid.Row="1">
        </ToolBarTray>
        <ScrollViewer Grid.Row="2">

        </ScrollViewer>
    </Grid>
</Window>

这是我背后的代码:

public partial class xWindow : Window
{

    public Menu Menu
    {
        get { return (Menu)GetValue(MenuProperty); }
        set { SetValue(MenuProperty, value); }
    }
    public static readonly DependencyProperty MenuProperty = DependencyProperty.Register("Menu", typeof(Menu), typeof(xWindow), new UIPropertyMetadata(0));

    public xWindow()
    {
        InitializeComponent();
    }
}

现在我的问题是:如何将我的xaml中的<Menu>元素绑定到后面代码中的依赖项属性,这样当我执行“myXwindow.Menu = new Menu(){...};”时菜单在窗口中更新?

感谢

注意:我尝试像这样设置xaml:<Menu x:Name="Menu">并删除c#中的dp所以我可以直接访问xaml中定义的菜单,这似乎有效(没有构建或运行错误)但是没有允许我在显示窗口后重新设置

1 个答案:

答案 0 :(得分:1)

您可以将Menu包装在其他控件中

<ContentControl x:Name="_menuContainer">
    <Menu/>
</ContentControl>

然后像这样写下你的财产:

public Menu Menu
{
    get { return (Menu)_menuContainer.Content; }
    set { _menuContainer.Content = value; }
}