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")就搞定的, 如今這麼麻煩, 有更簡單的方法忘告知.