如果我理解正確,你想改變這個網格的可見性,當他們都檢查或其中任何一個檢查。我認爲最好的辦法是去這裏討論這兩種情況,因爲你沒有說明你想要的是使用多重綁定。 這裏是我的實現,當我隱藏網格時,他們都檢查,但它很容易變動。
首先我們需要一個視圖。
<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>
查看後我們需要一個轉換器。在我們的例子中是BooleanToVisibilityConverter。
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();
}
}
您可以根據需要輕鬆更改或擴展代碼。希望這可以幫助。
你是什麼意思?請澄清你的答案。你想在兩個控件被選中時隱藏最後一個網格,或者當其中一個控件被選中時另一個控件也被選中,然後隱藏網格? –