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();
}
}