2010-10-14 95 views
1

我有一個XamlParseException在一些代碼試圖選擇TextBox中的所有文本。XamlParseException初始化一個靜態類

的XAML:

常見:SelectAllTextOnFocus.IsTextSelectedOnFocus = 「真」/>

後面的代碼:

public static class SelectAllTextOnFocus 
{ 
    public static readonly DependencyProperty IsTextSelectedOnFocusProperty = DependencyProperty.RegisterAttached("IsTextSelectedOnFocus", typeof(bool), typeof(SelectAllTextOnFocus), new UIPropertyMetadata(false, OnIsTextSelectedOnFocusChanged)); 

    public static bool GetIsTextSelectedOnFocus(TextBox item) 
    { 
     return (bool)item.GetValue(IsTextSelectedOnFocusProperty); 
    } 

    public static void SetIsTextSelectedOnFocus(TextBox item, bool value) 
    { 
     item.SetValue(IsTextSelectedOnFocusProperty, value); 
    } 

    static void OnIsTextSelectedOnFocusChanged(DependencyObject depObj, DependencyPropertyChangedEventArgs e) 
    { 
     var item = depObj as TextBox; 
     if (item == null) 
     { 
      return; 
     } 

     if (e.NewValue is bool == false) 
     { 
      return; 
     } 

     if ((bool)e.NewValue) 
     { 
      item.GotFocus += OnGotFocus; 
     } 
     else 
     { 
      item.GotFocus -= OnGotFocus; 
     } 
    } 

我得到一個XmalParseException,與消息:「的類型初始Common.SelectAllTextOnFocus'拋出一個異常。

任何想法是什麼導致了這一點,或者如何去調試呢?

內部異常是:'IsTextSelectedOnFocus'屬性已被'SelectAllTextOnFocus'註冊。

這是在創建靜態類時註冊的 - 那麼它如何被註冊兩次?

+0

有什麼'InnerException.InnerException'? – SLaks 2010-10-14 12:26:00

+0

我已經添加了內部異常消息。 – 2010-10-14 12:33:28

回答

2

假設你在調試器中抓住了這個,看看InnerException,這應該告訴你這導致TypeInitializationException例外。這應該給你更多的暗示在哪裏看。

,我只能看到一個線,可能是,雖然這個問題:

public static readonly DependencyProperty IsTextSelectedOnFocusProperty = 
    DependencyProperty.RegisterAttached("IsTextSelectedOnFocus", 
     typeof(bool), 
     typeof(SelectAllTextOnFocus), 
     new UIPropertyMetadata(false, OnIsTextSelectedOnFocusChanged)); 

那這將在類型初始化執行的唯一代碼。

我看不出它有什麼問題,但是我不熟悉註冊依賴屬性。

+1

這是問題 - 有一個第二類已明確被複制和粘貼它仍試圖註冊到原來的類類型。 – 2010-10-14 12:37:42

+0

@傑克遜:非常好 - 很高興你找到了:) – 2010-10-14 12:46:13

1

intitializer類型(也稱爲靜態構造函數)爲您的static字段運行初始值設定項。

換句話說,IsTextSelectedOnFocusProperty初始值設定項會引發異常。