2010-02-23 70 views
1

我試圖擴大datagridcolumn有點,所以我可以使列寬基於百分比,而不是絕對在silverlight。這樣,無論網格的大小如何,列都佔用了網格的指定百分比。哦,真棒AG_E_PARSER_BAD_PROPERTY_VALUE

無論如何,這是我的第一個步驟

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 

任何想法?

回答

2

您無法將雙倍轉換爲雙倍?在這樣的CLR級別。你幾乎肯定不想。

Silverlight使用雙打,然後使用double.NaN和double.PositiveInfinity來表示「特殊」值。

+0

啊,所以設置默認值爲double.Nan而不是使用雙重?......做了伎倆謝謝你! – Jeff 2010-02-24 00:02:11

+0

我可能會選擇double.NaN,但是您可能需要檢查附加行爲中的「特殊」值並做一些特殊的事情(比如不設置寬度或其他),以便您可以選擇任何特殊值喜歡。 – 2010-02-24 00:10:53