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

  • 相关阅读:
    synchronized一个(二)
    org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
    java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout
    NTFS簇大小对硬盘性能的影响测试
    Win10 开机自动打开上次未关闭程序怎么办
    Win10快速访问怎么关闭?
    激活windows 10 LTSC 2019(无需工具)
    WPS文字双行合一
    插入百度地图代码后,页面文字不能被选中的解决方案
    WPS文字批量选中整行(以第?章为例)
  • 原文地址:https://www.cnblogs.com/wall-e/p/3270158.html
Copyright © 2011-2022 走看看