zoukankan      html  css  js  c++  java
  • WPF xmal绑定数据,当显示数据过长用省略号代替的方法

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

    先看看最终的效果吧

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

     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实现),要是能实现的话希望能够分享一下,谢谢了。  

  • 相关阅读:
    第四次团队作业
    第三次团队作业博客——系统设计
    第二次团队作业博客
    第一次团队作业博客
    团队作业——总结
    软件工程课程总结
    Beta冲刺提交-星期三
    个人作业-Alpha项目测试
    第四次团队作业
    第三次团队作业——系统设计
  • 原文地址:https://www.cnblogs.com/wall-e/p/3270158.html
Copyright © 2011-2022 走看看