silverlight datagrid 怎么能把0.3显示成30% 呢

快乐大法师 2011-10-20 01:20:14
数据绑定到datagrid Binding有没有什么初始化的方法啊
或者用其他的方法实现
...全文
94 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
night_edge 2011-10-21
  • 打赏
  • 举报
回复
不用那么复杂 吧
SL本身就由格式化数据的选项
你在binding的时候 这样写
 DataMemberBinding="{Binding ID,StringFormat=\{0:P0\}}"


就可以了
assky124 2011-10-21
  • 打赏
  • 举报
回复
double.ToString("P2")
好像是
暖枫无敌 2011-10-20
  • 打赏
  • 举报
回复
写一个转换器吧,在Silverlight中添加一个类,名为PercentConverter.cs,然后复制如下代码


using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Globalization;
using System.Windows.Data;

#region 为百分数定义转换器
//定义一个转换类 并被页面引用为资源
/*
* IValueConverter - 值转换接口,将一个类型的值转换为另一个类型的值。它提供了一种将自定义逻辑应用于绑定的方式
* Convert - 正向转换器。将值从数据源传给绑定目标时,数据绑定引擎会调用此方法
* ConvertBack - 反向转换器。将值从绑定目标传给数据源时,数据绑定引擎会调用此方法
*/
/// <summary>
/// 正向转换器。将值从数据源传给绑定目标时,数据绑定引擎会调用此方法
/// </summary>
/// <param name="value">转换之前的值</param>
/// <param name="targetType">转换之后的类型</param>
/// <param name="parameter">转换器所使用的参数</param>
/// <param name="culture">转换器所使用的区域信息</param>
/// <returns>转换后的值</returns>
public class PercentConverter : IValueConverter
{
public object Convert(object value,
Type targetType,
object parameter,
CultureInfo culture)
{
double d = (double)value;
return Math.Round(d * 100, 2) + "%"; //2是保留的小数位数
}
/// <summary>
/// 反向转换器。将值从绑定目标传给数据源时,数据绑定引擎会调用此方法
/// </summary>
/// <param name="value">转换之前的值</param>
/// <param name="targetType">转换之后的类型</param>
/// <param name="parameter">转换器所使用的参数</param>
/// <param name="culture">转换器所使用的区域信息</param>
/// <returns>转换后的值</returns>
public object ConvertBack(object value,
Type targetType,
object parameter,
CultureInfo culture)
{
//反向转换,如果有需要,你自己重写,将如30%重现转换成0.3
string strValue = value.ToString();
//...
return value;
}
}
#endregion


然后在DataGrid绑定的时候,使用转换器即可

首先在需要使用转换的页面中加入下语句:

xmlns:local="clr-namespace:XXX" //XXX是你Silverlight的项目命名空间

然后添加:

<UserControl.Resources>
<local:DateTimeConverter x:Key="PercentConverter" />
</UserControl.Resources>

<sdk:DataGrid Margin="0" AutoGenerateColumns="False" x:Name="dg">
<sdk:DataGrid.Columns>
<sdk:DataGridTemplateColumn Header="百分比">
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding 实体属性名,Convert={StaticResource PercentConverter}}"></TextBlock>
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>
</sdk:DataGrid.Columns>
</sdk:DataGrid>

8,735

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧