Silverlight表格绑定中的一点细节处理
1. 如何设置单元格的对齐方式
<UserControl.Resources>
<Style x:Key="AlignCenter" TargetType="data:DataGridCell">
<Setter Property="HorizontalContentAlignment" Value="Right" />
</Style>
</UserControl.Resources>
首先设置如上样式, 然后在Grid列中指定如下属性:
<data:DataGridTextColumn CellStyle="{StaticResource AlignCenter}"/>
2. 如何绑定时格式化. 比如取成百分比, 截断字符等.
先声明一个转换类.实现IValueConverter接口.
public class ToPercentConverter : IValueConverter
{
#region IValueConverter Members
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
double valueDouble;
if (double.TryParse(value.ToString(), out valueDouble))
return Math.Round(valueDouble, 2).ToString("#0.00") + "%";
else
return "0.00%";
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return double.Parse(value.ToString().Replace("%", ""));
}
#endregion
}
另外发现个问题, Ojbect value 传入值是0的时候, (double)value, 居然回抛异常, 强制转换失败, 何解? 知道请回复一句,谢谢.
所以写成了TryParse的方式.
之后在使用时, 先在Xaml中声明类.
<UserControl.Resources>
<Bingosoft_CommonLib_SL:ToPercentConverter x:Key="ToPercentConverter"/>
</UserControl.Resources>
在DataGrid绑定时:
<data:DataGridTextColumn Binding="{Binding theRate, Converter={StaticResource ToPercentConverter}}"/>
就实现自定义格式化了, 以前Asp.net中一个Eval("data","formate")就搞定的, 如今这么麻烦, 有更简单的方法忘告知.