c# - XAML、C# : How to Set ListView Visibility to Collapse/Visible on Checkbox value toggle?

标签 c# xaml windows-10 win-universal-app windows-10-mobile

我是 C# 和 Windows 应用程序开发的新手,出于学习目的,我正在尝试构建 Windows 10 通用应用程序。我正在尝试使用中心 View 。

下面是我的文件的 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>

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

最佳答案

使用转换器概念:

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>

关于c# - XAML、C# : How to Set ListView Visibility to Collapse/Visible on Checkbox value toggle?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32057175/

相关文章:

c++ - 检查 Windows 8 中的设备(PC/平板电脑)是什么

node.js - 如何在 WSL 2 Ubuntu 中更新 npm

c# - 写入时图像不更新..奇怪的事情发生了

c# - NUnit 3.0 和 Assert.Throws

c# - Wpf - 接收框架元素属性的属性值更改通知

wpf - 如何在WPF/XAML中正确使用INotifyPropertyChanged

c# - 如何在发出语音命令后关闭 Cortana 的确认屏幕?

c# - Windows BluetoothLeAdvertisement 不包含 Android 设备广播的服务 uuid

c# - 带网格线的 Winrt 自定义网格控件

c# - 如何在 ASP.NET Core 中返回 401 而不是 302?