Элемент содержимого привязан к свойству - PullRequest
0 голосов
/ 25 ноября 2010

Я пытаюсь создать окно с элементом <Menu>, связанным с зависимостьюProperty:

Вот мой 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();
    }
}

Теперь мой вопрос: как я могу связать элемент <Menu> в моем xaml со свойством зависимостей в коде так, чтобы при выполнении "myXwindow.Menu = new Menu () {...};»меню обновляется в окне?

спасибо

Примечание: я попытался установить xaml следующим образом: <Menu x:Name="Menu"> и удалить дп в c #, чтобы я мог получить прямой доступ к меню, определенному вxaml, который, кажется, работает (нет ошибки сборки или запуска), но не позволяет мне установить его заново после отображения окна

1 Ответ

1 голос
/ 25 ноября 2010

Вы можете заключить свой Menu в другой элемент управления

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

, а затем написать свою собственность так:

public Menu Menu
{
    get { return (Menu)_menuContainer.Content; }
    set { _menuContainer.Content = value; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...