8,735
社区成员
发帖
与我相关
我的任务
分享
DataMemberBinding="{Binding ID,StringFormat=\{0:P0\}}"
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>