c#:如何设置列表视图的可见性为折叠/在复选框值切换时可见

本文关键字:复选框 折叠 可见性 何设置 设置 视图 列表 | 更新日期: 2023-09-27 18:08:26

我是c#和Windows应用程序开发的新手,只是为了学习目的,我正在尝试构建一个Windows 10通用应用程序。我正在尝试Hub视图。

下面是我的文件的Xaml结构。

   <Hub>
       <HubSection1>
       //SomeData here
       </HubSection1>
       <HubSection2>
          <DataTemplate>
          <Grid>
              <ListView1>
                         <CheckBox1>
                                   <ListView2>
                                        //SomeData here
                         <CheckBox2>
                                   <ListView3>
                                         //SomeData here
                         <CheckBox3>
                                   <ListView4>
                                         //SomeData here
              </ListView1>
           </Grid>
           </DataTemplate>
       </HubSection2>
       <HubSection3>
       //SomeData here
       </HubSection3>
       <HubSection4>
       //SomeData here
       </HubSection4>
    </Hub>

所以我要做的是切换ListView(2,3,4)的可见性使用复选框(1,2,3)分别。但是在我的c#代码中,我无法访问XAML文件中定义的变量,我在复选框侦听器方法中尝试了FindName(),但它没有帮助。是否有任何方法我可以获取数据或变量或绑定它们?

c#:如何设置列表视图的可见性为折叠/在复选框值切换时可见

使用转换器概念:

public class BooleanToVisibility : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        bool isChecked = false;
        if (bool.TryParse(value.ToString(), out isChecked))
        {
            return isChecked ? Visibility.Visible : Visibility.Collapsed;
        }
        return visibility;
    }
    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return value;
    }
}
XAML:

<Window x:Class="MyApp.Windows.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:converters="clr-namespace:MyApp.Converters">
    <StackPanel>
        <StackPanel.Resources>
            <converters:BooleanToVisibility x:Key="boolToVisibility"/>
        </StackPanel.Resources>
        <CheckBox Content="Check to see ListView" Name="changeVisibility"/>
        <ListView Visibility="{Binding Path=IsChecked, ElementName=changeVisibility, Converter={StaticResource boolToVisibility}}"/>
    </StackPanel>
</Window>