Xaml 上下文菜单可检查菜单项不工作

Xaml 上下文菜单可检查菜单项不工作,xaml,Xaml,这是我的密码 <UserControl.ContextMenu> <ContextMenu> <MenuItem IsCheckable="True" IsChecked="{Binding ElementName=btnSearch,Path=IsChecked}" Header="Search"/> </ContextMenu> </UserControl.ContextMe

这是我的密码

<UserControl.ContextMenu>
        <ContextMenu>
            <MenuItem IsCheckable="True" IsChecked="{Binding ElementName=btnSearch,Path=IsChecked}" Header="Search"/>
        </ContextMenu>
    </UserControl.ContextMenu>

       <Grid>
            <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" >           
                <ToggleButton Style="{StaticResource ButtonAnchor}"  Content="Search" x:Name="btnSearch"/>
            </StackPanel>
        </Grid>

<Grid Visibility="{Binding ElementName=btnSearch, Path=IsChecked,Converter={StaticResource BooleanToVisibilityConverter}}">
</Grid>


我想使用选中的切换按钮更改最后一个网格的可见性,其工作方式已更改,但如何包括选中的菜单项也更改最后一个网格的可见性。

如果我理解正确,您想在两个或其中一个都选中时更改此网格的可见性。我认为最好的方法是在这里讨论这两种情况,因为您并没有澄清您想要的是使用多个绑定。 这是我的实现,当两个网格都被选中时,我隐藏了网格,但是它很容易改变

首先我们需要一个视图

<Window
    x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:local="clr-namespace:WpfApplication1"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    Title="MainWindow"
    Width="525"
    Height="350"
    mc:Ignorable="d">

    <Window.Resources>
        <local:BooleanToVisibilityConverter x:Key="booleanToVisibilityConverter" />
    </Window.Resources>

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>

        <MenuItem
            Name="test"
            Grid.Row="0"
            Header="Search"
            IsCheckable="True"
            IsChecked="False" />

        <Grid Grid.Row="1">
            <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center" >
                <ToggleButton Content="Search" x:Name="btnSearch" IsChecked="False" />
            </StackPanel>
        </Grid>

        <Grid Grid.Row="1" HorizontalAlignment="Center" VerticalAlignment="Bottom">
            <Grid.Visibility>
                <MultiBinding  Converter="{StaticResource booleanToVisibilityConverter}">
                    <Binding ElementName="btnSearch" Path="IsChecked" />
                    <Binding ElementName="test" Path="IsChecked" />
                </MultiBinding>
            </Grid.Visibility>

            <TextBlock Text="tralala" />
        </Grid>

    </Grid>
</Window>

您可以根据需要轻松更改或扩展代码。希望这有帮助。

你是什么意思?请澄清你的答案。您希望在选中两个控件时隐藏最后一个网格,还是在选中其中一个控件时也选中另一个控件,然后隐藏网格?
public class BooleanToVisibilityConverter : IMultiValueConverter
    {
        public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
        {
            if (values != null)
            {
                bool btnSerach = bool.Parse(values[0].ToString());
                bool menuItemTest = bool.Parse(values[1].ToString());

                if (btnSerach && menuItemTest)
                    return System.Windows.Visibility.Visible;
            }

            return System.Windows.Visibility.Collapsed;
        }

        public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }