WPF - ComboBox 的条件可见性

WPF - Conditional visibility with ComboBox

我是 WPF(和一般的 .Net)的新手。我有 2 个组合框,想用第一个控制第二个的可见性:

if selected "Uno" in Left ComboBox, Right ComboBox is hidden.

这是我的 XAML:

<Window x:Class="WpfApp1.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:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:WpfApp1"
    mc:Ignorable="d"
    Title="MainWindow" Height="350" Width="525">
<Grid>
    <ComboBox x:Name="Left" HorizontalAlignment="Left" Margin="66,47,0,0" VerticalAlignment="Top" Width="120">
        <ComboBoxItem Content="Uno"></ComboBoxItem>
        <ComboBoxItem Content="Dos"></ComboBoxItem>
    </ComboBox>
    <ComboBox x:Name="Right" HorizontalAlignment="Left" Margin="326,47,0,0" VerticalAlignment="Top" Width="120">
        <Style TargetType="ComboBox">
            <Style.Triggers>
                <DataTrigger Binding="{Binding ElementName=Left, Path=SelectedItem}" Value="Uno">
                    <Setter Property="Visibility" Value="Hidden"></Setter>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </ComboBox>

</Grid>

我也试过了

<DataTrigger Binding="{Binding ElementName=Left, Path=SelectedIndex}" Value="0">
       <Setter Property="Visibility" Value="Hidden"></Setter>
</DataTrigger>

感谢您的帮助和抽出时间

<Grid>
    <Grid.Resources>
        <local:IntToVisibilityConverter x:Key="IntToVisibilityConverter" />
    </Grid.Resources>

    <ComboBox x:Name="Left" HorizontalAlignment="Left" Margin="66,47,0,0" VerticalAlignment="Top" Width="120">
        <ComboBoxItem Content="Uno"></ComboBoxItem>
        <ComboBoxItem Content="Dos"></ComboBoxItem>
    </ComboBox>

    <ComboBox x:Name="Right" HorizontalAlignment="Left" Margin="326,47,0,0" VerticalAlignment="Top" Width="120"  Visibility="{Binding ElementName=Left, Path=SelectedIndex,Converter={StaticResource IntToVisibilityConverter}}">
    </ComboBox>
</Grid>
public class IntToVisibilityConverter: IValueConverter
{
   /// <summary>
   ///  Used to Convert a value
   /// </summary>
   public object Convert(object value, Type targetType, object parameter, string language)
   {
       int index= (int)value;
       return index==0? Visibility.Hidden : Visibility.Visible;
   }

   /// <summary>
   ///  Inverse of Convert method
   /// </summary>
   public object ConvertBack(object value, Type targetType, object parameter, string language)
   {
       throw new NotImplementedException();
   }
}

只要设置右边ComboBoxStyle属性绑定到SelectedItem.Content:

<ComboBox x:Name="Right" HorizontalAlignment="Left" Margin="326,47,0,0" VerticalAlignment="Top" Width="120">
    <ComboBox.Style>
        <Style TargetType="ComboBox">
            <Style.Triggers>
                <DataTrigger Binding="{Binding ElementName=Left, Path=SelectedItem.Content}" Value="Uno">
                    <Setter Property="Visibility" Value="Hidden"></Setter>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </ComboBox.Style>
</ComboBox>