• WP 数据绑定Visibility


    发现又懒了很久了

    随便画点字吧

    在WP中,一些控件(如ListBox)模板数据绑定的时候,可能需要根据需要绑定的数据,来动态的选择一些内容是否显示(额,不会表达,其实简单的说就是绑定控件的Visibility)

    其实方法是和SL一样的,需要一个转换类来转换成Visibility.Collapsed或者Visibility.Visible

    比如新建一个工程VisibilityBinding

    image

    然后创建一个转换类ConvertVisibility.cs,继承于IValueConverter(记得添加引用using System.Windows.Data)

    代码:

    using System;
    using System.Windows;
    using System.Windows.Data;

    namespace VisibilityBinding
    {
        public class ConvertVisibility : IValueConverter
        {
            public ConvertVisibility()
    10         {
    11         }
    12
    13         public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    14         {
    15             if (value == null)
    16             {
    17                 //设置当输入不存在时的默认返回值
    18                 return Visibility.Collapsed;
    19             }
    20             bool s = (bool)value;
    21             //根据输入,判断返回值
    22             return (s != true) ? Visibility.Collapsed : Visibility.Visible;
    23         }
    24         public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    25         {
    26             throw new NotImplementedException();
    27         }
    28     }
    29 }

    我们再添加一个数据类itemdata,用于绑定数据:

    namespace VisibilityBinding
    {
        public class itemdata
        {
            public string Name
            { get; set; }
            public string Score
            { get; set; }
            public bool Visibilitytype
    10         { get; set; }
    11     }
    12 }

    然后我们回到MainPage.xaml,拖入个Listbox,并简单编辑下绑定模板

    image

    然后现在页面顶部添加引用

    1 xmlns:Local="clr-namespace:VisibilityBinding"

    然后在页面里添加资源:

    1             <Grid.Resources>
    2                 <Local:ConvertVisibility x:Key="dataconverter"/>
    3             </Grid.Resources>

    最后设定绑定数据的转换:

    1 <TextBlock TextWrapping="Wrap" Text="{Binding Name}" Margin="0,0,15,0" Width="200"  Visibility="{Binding Path=Visibilitytype,Converter={StaticResource dataconverter}}" />

    然后设定数据绑定:

    using System.Collections.Generic;
    using System.Windows;
    using Microsoft.Phone.Controls;

    namespace VisibilityBinding
    {
        public partial class MainPage : PhoneApplicationPage
        {
            public MainPage()
    10         {
    11             InitializeComponent();
    12         }
    13
    14         private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
    15         {
    16             List<itemdata> idata = new List<itemdata>();
    17             idata.Add(new itemdata("语文","80",true));
    18             idata.Add(new itemdata("数学", "86", false));
    19             idata.Add(new itemdata("英语", "84", true));
    20             idata.Add(new itemdata("计算机", "76", false));
    21             lb.ItemsSource = idata;
    22         }
    23     }
    24 }

    运行看看效果:

    image

    其实真个很简单,关键是在转换类做对应的处理,即使输入不是bool型的,只要在转换类做对应的处理,返回Visibility.Collapsed或者Visibility.Visible就可以了

    源码:

  • 相关阅读:
    写给自己:青年员工交流会会议记录
    写给自己:金融小白的考证之路
    写给自己:入职初体验
    反欺诈体系
    政策&定价&风控审批策略
    你还在寻找Navicat的破解版本?你应该了解开源免费的DBeaver
    规则引擎在IoT的重要性?
    轻松上手SpringBoot Security + JWT Hello World示例
    Kafka 系列-1
    JDK14-ZGC调研初探
  • 原文地址:https://www.cnblogs.com/sun8134/p/2208398.html
Copyright © 2020-2023  润新知