• 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就可以了

    源码:

  • 相关阅读:
    Linnia学习记录
    漫漫考研路
    ENS的学习记录
    KnockoutJS 3.X API 第四章 数据绑定(4) 控制流with绑定
    KnockoutJS 3.X API 第四章 数据绑定(3) 控制流if绑定和ifnot绑定
    KnockoutJS 3.X API 第四章 数据绑定(2) 控制流foreach绑定
    KnockoutJS 3.X API 第四章 数据绑定(1) 文本及样式绑定
    KnockoutJS 3.X API 第三章 计算监控属性(5) 参考手册
    KnockoutJS 3.X API 第三章 计算监控属性(4)Pure computed observables
    KnockoutJS 3.X API 第三章 计算监控属性(3) KO如何实现依赖追踪
  • 原文地址:https://www.cnblogs.com/sun8134/p/2208398.html
Copyright © 2020-2023  润新知