2011-04-26 71 views
2

我的UserControl工作正常。今天,我爲usercontrol添加了一個簡單的接口。現在我可以在設計模式(XAML)中加載它,但在新的Window1.Xaml中使用UserControl時,它會崩潰。任何想法?WPF依賴屬性在GUI中使用我的界面崩潰

'類型'OUTPUT ___ WPF01.ucUpDownBox'上匹配指定綁定約束的構造函數的調用引發異常。

''' <summary> 
''' BorderColor Dependency Property 
''' </summary> 
Public Shared ReadOnly BorderColorProperty As DependencyProperty = _ 
    DependencyProperty.Register("BorderColor", GetType(System.Windows.Media.Color), GetType(ucUpDownBox), _ 
     New FrameworkPropertyMetadata(System.Windows.Media.Color.FromArgb(255, 50, 50, 50), _ 
      FrameworkPropertyMetadataOptions.None, _ 
      AddressOf OnBorderColorChanged)) 

''' <summary> 
''' Gets or sets the BorderColor property. This dependency property 
''' indicates .... 
''' </summary> 
Public Property BorderColor() As System.Windows.Media.Color Implements IButton.Color '<--- IButton.Color is the interface with Media.Color 
    Get 
     Return CType(GetValue(BorderColorProperty), System.Windows.Media.Color) 
    End Get 
    Set(ByVal value As System.Windows.Media.Color) 
     SetValue(BorderColorProperty, value) 
    End Set 
End Property 

''' <summary> 
''' Handles changes to the BorderColor property. 
''' </summary> 
Private Overloads Shared Sub OnBorderColorChanged(ByVal d As DependencyObject, ByVal e As DependencyPropertyChangedEventArgs) 
    Dim target As ucUpDownBox = CType(d, ucUpDownBox) 
    Dim oldBorderColor As System.Windows.Media.Color = CType(e.OldValue, System.Windows.Media.Color) 
    Dim newBorderColor As System.Windows.Media.Color = target.BorderColor 
    target.OnBorderColorChanged(oldBorderColor, newBorderColor) 
End Sub 

''' <summary> 
''' Provides derived classes an opportunity to handle changes to the BorderColor property. 
''' </summary> 
Protected Overridable Overloads Sub OnBorderColorChanged(ByVal oldBorderColor As System.Windows.Media.Color, ByVal newBorderColor As System.Windows.Media.Color) 
    Dim uc As ucUpDownBox = CType(Me, ucUpDownBox) 

    uc.Col1A.Color = AddLuminance(BorderColor, 60) 
    uc.Col1B.Color = AddLuminance(BorderColor, -60) 
End Sub 

回答

1

「上型......匹配指定綁定約束構造器的調用拋出異常」

此錯誤通常意味着,有一個運行時間錯誤解析XAML代碼。哪一個當然不會告訴你很多。所以你需要獲得更多信息。基本上,你所看到的例外只是一個普遍的錯誤,我們想看看導致這個問題的原因。

要獲得真正的異常(或我們所說的內部異常): - 激活捕獲在Visual Studio中引發的所有異常。 打開調試>例外並激活「公共語言運行時例外」的「拋出」列中的複選框。

現在再次觸發崩潰,看看你得到了什麼。理想情況下,我們希望看到堆棧跟蹤。 如果你看看跟蹤,你可能會看到你的代碼的一部分被調用。看看這段代碼,看看你能否從那裏找出問題。

如果您仍然陷入困境,那麼在您的問題中發佈一些代碼和堆棧跟蹤,我們將看到我們可以從那裏做些什麼。

有時'輸出'窗口也會給你一些信息。

+0

嗨Liz。 Thousend感謝你。現在,我的應用程序中有101個錯誤需要解決。這將花費很多時間。聽起來不好?我喜歡在他們的心中解決這些問題。感謝tipp。我希望這樣,我會找到一個解決方案。 – goldengel 2011-04-27 08:25:11

2

當默認值的類型與依賴項屬性的類型不相同時,通常會發生這種情況。

E.g. 0而不是0.0,而不是刷子。

也可以通過在構造函數中使用非賦值(空)屬性引起。

+0

這解決了我的問題,非常感謝! 'new PropertyMetadata(string.Empty)'是'new PropertyMetadata(0)'。如你所說,它必須是默認的類型。 – Mafii 2016-07-12 09:56:35