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

 

 

源码:

转载于:https://www.cnblogs.com/sun8134/archive/2011/10/12/2208398.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值