Как я могу привязать данные для некомандного MenuItem IsEnabled, чтобы оставаться совместимым с командным MenuItem? - PullRequest
1 голос
/ 18 августа 2010

Этот пункт меню, потому что он связан с командой, делает для меня магию за кулисами:

 <MenuItem Name="mnuOpen"  Command="Open"/>

, где у меня

    <Window.CommandBindings>
    <CommandBinding Command="Open"
                    Executed="CommandBinding_Open_Executed"
                    CanExecute="CommandBinding_ProjectSelected"/>
    </Window.CommandBindings>

, но каждая привязка, которую я пробовал, не удаласьсделать что-нибудь.

<MenuItem Name="mnuExplorer" Click="mnuExplorer_Click" Header="Open Containing Folder" IsEnabled="{Binding ElementName=mnuOpen, Path=IsEnabled}" />

1 Ответ

1 голос
/ 18 августа 2010

Работает нормально, может быть, вы забыли установить флаг CanExecute или имеете другую зависимость

полный код

<Window x:Class="MenuBinding.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
<Window.CommandBindings>
    <CommandBinding Command="Open"
                Executed="CommandBinding_Executed"
                CanExecute="CommandBinding_CanExecute"/>
</Window.CommandBindings>
<Grid>
    <Menu>
        <MenuItem Name="mnuOpen"  Command="Open" IsEnabled="False" />
        <MenuItem Name="mnuExplorer" Header="Open Containing Folder" IsEnabled="{Binding ElementName=mnuOpen, Path=IsEnabled}" />
    </Menu>
</Grid>

и класс

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    private void CommandBinding_Executed(object sender, ExecutedRoutedEventArgs e)
    {
        MessageBox.Show("Magic");
    }

    private void CommandBinding_CanExecute(object sender, CanExecuteRoutedEventArgs e)
    {
        e.CanExecute = true; //define if command can be executed
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...