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

先看看最终的效果吧

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

 public class StringformatConvert:IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
string s = value.ToString();
int leng;
if (int.TryParse(parameter.ToString(), out leng))
{
if (s.Length <= leng)
return s;
else
return s.Substring(, leng) + "...";
}
else
return string.Empty;
} public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}

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

   <Window.Resources>
<local:StringformatConvert x:Key="stringConvert"/>
</Window.Resources>
<Grid>
<ListBox Height="138" HorizontalAlignment="Left" Margin="132,75,0,0" Name="listBox1" VerticalAlignment="Top" Width="172">
<ListBox.ItemTemplate>
<DataTemplate DataType="ListBoxItem">
<TextBlock Text="{Binding Path=Name,Converter={StaticResource stringConvert},ConverterParameter=5}">
<TextBlock.ToolTip>
<ToolTip>
<TextBlock Text="{Binding Name}"/>
</ToolTip>
</TextBlock.ToolTip>
</TextBlock>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>

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

WPF xmal绑定数据,当显示数据过长用省略号代替的方法的更多相关文章

  1. C#,WPF中使用多文本显示数据,并对其数据进行关键字高亮等操作

    需求:针对多文本信息显示,我们需要对其内容中的某些关键字或者某行进行高亮显示,并用不同颜色显示. 分析:在C#中,首先要进行多文本信息显示,可以RichTextBox(不要使用TextBox)控件,该 ...

  2. c# 在datagridview中添加comboboxcolumn 绑定数据库读取显示数据

    datagridview中的comboboxcolumn 从绑定的数据库中读取显示时,只需要注意一点,就是sql语句加个 CStr() 字符串转换函数即可,如下: SELECT CStr(XXX) a ...

  3. C# wpf image绑定viewModel没有显示图片

    在wpf绑定图片,用viewModel的图片绑定image 我是用viewModel.cs public class viewModel:INotifyPropertyChanged { #regio ...

  4. DataGridView显示数据的两种方法

    1.简介 DataGridView空间是我们经常使用的显示数据的控件,它有极高的可配置性和可扩展性. 2.显示数据 DataGridView显示数据一般我们经常使用的有两种方法,一种是直接设置Data ...

  5. AngularJs从数据库获取数据并显示

    哈哈,昨天下午和今天早上,花上一些时间,学习AngularJs,仅是粗略预览一下.很好,非常好. 由于手上有开发ASP.NET MVC环境,就在这测试下,去数据库获取数据并显示数据. 数据库表创建,添 ...

  6. 如何解决在ie下,Echarts多次使用setOption更改数据时,数据错乱问题

    一.问题描述 根据用户的操作,通过Ajax请求,获取某段时间内的某数据趋势折线图数据.用户切换数据项或更改时间段时,ie中渲染的折线图包含了上一次获取的数据,导致数据错乱,如下图所示: 二.代码 数据 ...

  7. ItemsControl绑定的数据模板显示不同样式:模板选择器

    总所周知,wpf提供了数据模板,列表控件可以绑定数据实现批量显示同类型数据.不过同个数据模板显示不同的样式怎么办?这时我们可以用模板选择器. 首先我们可以将数据绑定到首先定义资源样式 <Data ...

  8. C# dev GridControl绑定数据不能显示

    如题, dev GridControl绑定数据不能显示时可检查数据操作顺序 view = advBandedGridView1 as AdvBandedGridView; //第1 this.advB ...

  9. c# winform 中DataGridView绑定List<T> 不能显示数据

    遇到问题 DataGridView绑定List后,List更新后再次绑定不显示数据 datagridview 绑定数据源的时候 用List是不能显示修改内容的..要用binginglist<T& ...

随机推荐

  1. Android(java)学习笔记117:英文朗诵android App编写实例

    1.首先,我先把代码放到下面: package com.himi.speaker; import java.util.Locale; import android.app.Activity; impo ...

  2. session超时和cookie过期

    一.Cookie的过期和Session的超时有什么区别? 会话的超时由服务器来维护,它不同于Cookie的失效日期.首先,会话一般基于驻留内存的cookie不是持续性的cookie,因而也就没有截至日 ...

  3. scrapy yield Request

    import scrapy from myproject.items import MyItem class MySpider(scrapy.Spider): name = ’example.com’ ...

  4. python(6)-类

    面向对象编程是一种编程方式,此编程方式的落地需要使用 "类" 和 "对象" 来实现,所以,面向对象编程其实就是对 "类" 和 "对 ...

  5. WIN7 X64 如何运行debug

    WIN7 X64 如何运行debug 下载debug.exe 安装dosbox 安装完成后将debug.exe放入某个盘的根目录下(以c盘为例) 然后运行dosbox,输入 mount c c:\ c ...

  6. MicrosoftActiveSync 安装

    如何将自己的程序放到开发板中呢,一般都有三种方法:U盘.SD卡.USB同步,前两者其实差不多,很方便快捷,而笔者在进行USB同步的时候,还是发现了一些问题,下面我来介绍一下USB同步方法的相关知识. ...

  7. Activity保持关闭不销毁

    activity按back键 消失但是不销毁的实现 重新定义finish()方法: @Override    public void finish() {        // TODO Auto-ge ...

  8. java演示facade(外观)模式

    实际应用中,原来的代码涉及多个子系统时,重新进行类的设计,将原来分散在源码中的类结构及方法重新组合,形成新的.统一的接口,供上层应用使用. Facade所面对的往往是多个类或其它程序单元,通过重新组合 ...

  9. 软谋在线教育诚招php,java,.net,设计师讲师(可兼职)

    软谋教育专注软件在线教育,依托腾讯课堂.yy课堂授课,在线教授计算机知识,现因业务发展,招聘php,java,.net,设计师讲师各两名,如果您满足以下条件,即可联系我们应聘: 1.相关专业工作经验3 ...

  10. Android drawable xml 各种小知识

    摘抄自网络. 圆角或者各种变种背景, <?xml version="1.0" encoding="utf-8"?> <shape xmlns: ...