WPF xmal绑定数据,当显示数据过长用省略号代替的方法_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > WPF xmal绑定数据,当显示数据过长用省略号代替的方法

WPF xmal绑定数据,当显示数据过长用省略号代替的方法

 2013/8/20 16:34:49  Vimana  博客园  我要评论(0)
  • 摘要:有时候会遇到这种情况,用了数据绑定显示的数据太长时,如何让过长的数据显示规定的长度,多余的用省略号代替呢,自己写了个简单的小例子和大家分享一下^_^,我也是学习WPF不久,这是我第一次写博客,有问题还希望大家指出。先看看最终的效果吧实现方式自定义一个StringformatConvert类,实现IValueConverter接口,绑定的时候加上转化器就行了。1publicclassStringformatConvert:IValueConverter2{3publicobjectConvert
  • 标签:方法 数据

有时候会遇到这种情况,用了数据绑定显示的数据太长时,如何让过长的数据显示规定的长度,多余的用省略号代替呢,自己写了个简单的小例子和大家分享一下^_^,我也是学习WPF不久,这是我第一次写博客,有问题还希望大家指出。

先看看最终的效果吧

实现方式自定义一个StringformatConvert类,实现IValueConverter接口,绑定的时候加上转化器就行了。

class="code_img_closed" src="/Upload/Images/2013082016/0015B68B3C38AA5B.gif" alt="" />logs_code_hide('df0471ff-06b9-4773-98cc-edde1a7c5b2e',event)" src="/Upload/Images/2013082016/2B1B950FA3DF188F.gif" alt="" />
 1 public class StringformatConvert:IValueConverter
 2     {
 3         public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
 4         {
 5             string s = value.ToString();
 6             int leng;
 7             if (int.TryParse(parameter.ToString(), out leng))
 8             {
 9                 if (s.Length <= leng)
10                     return s;
11                 else
12                     return s.Substring(0, leng) + "...";
13             }
14             else
15                 return string.Empty;
16         }
17 
18         public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
19         {
20             throw new NotImplementedException();
21         }
22     }
View Code

XAML部分的代码,当鼠标经过时显示全部的信息:

 1   <Window.Resources>
 2         <local:StringformatConvert x:Key="stringConvert"/>
 3     </Window.Resources>
 4     <Grid>
 5         <ListBox Height="138" HorizontalAlignment="Left" Margin="132,75,0,0" Name="listBox1" VerticalAlignment="Top" Width="172">
 6             <ListBox.ItemTemplate>
 7                   <DataTemplate DataType="ListBoxItem">
 8                     <TextBlock Text="{Binding Path=Name,Converter={StaticResource stringConvert},ConverterParameter=5}">
 9                         <TextBlock.ToolTip>
10                             <ToolTip>
11                                 <TextBlock Text="{Binding Name}"/>
12                             </ToolTip>
13                         </TextBlock.ToolTip>
14                     </TextBlock>
15                   </DataTemplate>
16             </ListBox.ItemTemplate>
17         </ListBox>
18     </Grid>
View Code

 

这里的ConverterParameter可以指定显示字符的长度,根据需要自己指定就行了,在StringformatConvert类中就是parameter这个参数。

后台代码:

 public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            List<Student> students = new List<Student>();
            students.Add(new Student { No = "1", Name = "张三", Age = "20" });
            students.Add(new Student { No = "2", Name = "这里显示的是一串很长很长的文字", Age = "21" });
            students.Add(new Student { No = "3", Name = "李四", Age = "21" });
            listBox1.ItemsSource = students;  
        }
       public class Student
        {
            public string No { get; set; }
            public string Name { get; set; }
            public string Age { get; set; }
        } 
    }

我是按照自己的想法把这个功能就实现了,我不知道有没有比这个更简单的方法(是否能够直接用string.Format实现),要是能实现的话希望能够分享一下,谢谢了。  

 

上一篇: 对字符串进行排序 下一篇: 没有下一篇了!
发表评论
用户名: 匿名