2010-07-16 25 views
2

當我這樣做時出現運行時錯誤。運行時UIElement的Casting錯誤

我有這個類:

public abstract class AnnObject : DependencyObject 

,我這樣做時,它編譯罰款,但引發運行時錯誤...

AnnObject aa; 
var b = (DependencyObject)aa; 
var c = (UIElement)b; 

我得到的錯誤是不能投AnnObject到UIElement

有人可以簡單解釋這種行爲嗎?

回答

4

在Silverlight中的類hiearchy的UI組件是: -

DependencyObject 
    UIElement 
    FrameworkElement 
     Control 

所以亨氏指出你需要從UIElement順序而獲得的能夠轉換爲UIElementDependencyObject。從個人而言,我看不到DependencyObject是有用的。我通常會在FrameworkElement,Control甚至更​​高。

+0

感謝AnthonyWJones,其實AnnObject是我在應用程序中使用的第三方控件類.....我不知道我是否可以將其更改爲UIElement。基本上我希望它是UIElement,所以我可以使用ToolTipService,你有什麼想法,我可以做到這一點?再次感謝 – VoodooChild 2010-07-17 15:30:13

+0

@VoodooChild:我能想到的唯一方法就是創建一個基於UIElement的新類,它使用AnnObject作爲組件。 – AnthonyWJones 2010-07-17 18:07:41

+0

@Anthony:這是否意味着我創建了一個類,例如擴展UIElement的InternalAnnObject類,然後將AnnObject作爲它的一個屬性使用?如果沒什麼問題,請您舉個例子更新答案。謝謝。 – VoodooChild 2010-07-18 01:53:10

2

您只能從DependencyObject而不是從UIElement派生。