我正在尝试将datagridcolumn扩展一点,以便我可以使列宽度基于百分比,而不是绝对的Silverlight。这样,无论网格的大小如何,列都会占用网格的指定百分比。
无论如何,这是我的第一步
public static class DataGridColumnBehaviors
{
public static readonly DependencyProperty WidthPercentageProperty =
DependencyProperty.RegisterAttached("WidthPercentage", typeof(double?), typeof(DataGridColumnBehaviors),
new PropertyMetadata(null, OnWidthPercentagePropertyChanged));
public static double? GetWidthPercentage(DependencyObject d)
{
return (double?)d.GetValue(WidthPercentageProperty);
}
public static void SetWidthPercentage(DependencyObject d, double? value)
{
d.SetValue(WidthPercentageProperty, value);
}
public static void OnWidthPercentagePropertyChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
{
}
}
在我正在做的XAML中
<data:DataGridTemplateColumn MinWidth="200"
dataBehaviors:DataGridColumnBehaviors.WidthPercentage="5.0"
Header="Name">
<data:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" />
</DataTemplate>
</data:DataGridTemplateColumn.CellTemplate>
<data:DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<TextBox Text="{Binding Name, Mode=TwoWay}" />
</DataTemplate>
</data:DataGridTemplateColumn.CellEditingTemplate>
</data:DataGridTemplateColumn>
这在运行时产生以下消息
AG_E_PARSER_BAD_PROPERTY_VALUE [Line: 85 Position: 100]
第85行是:
dataBehaviors:DataGridColumnBehaviors.WidthPercentage="5.0
有什么想法吗?
答案 0 :(得分:2)
你不能从双倍转换为双倍?像这样的CLR级别。你几乎肯定不想。
Silverlight使用双精度数,然后使用double.NaN和double.PositiveInfinity来表示“特殊”值。