當我這樣做時出現運行時錯誤。運行時UIElement的Casting錯誤
我有這個類:
public abstract class AnnObject : DependencyObject
,我這樣做時,它編譯罰款,但引發運行時錯誤...
AnnObject aa;
var b = (DependencyObject)aa;
var c = (UIElement)b;
我得到的錯誤是不能投AnnObject到UIElement
。
有人可以簡單解釋這種行爲嗎?
當我這樣做時出現運行時錯誤。運行時UIElement的Casting錯誤
我有這個類:
public abstract class AnnObject : DependencyObject
,我這樣做時,它編譯罰款,但引發運行時錯誤...
AnnObject aa;
var b = (DependencyObject)aa;
var c = (UIElement)b;
我得到的錯誤是不能投AnnObject到UIElement
。
有人可以簡單解釋這種行爲嗎?
在Silverlight中的類hiearchy的UI組件是: -
DependencyObject
UIElement
FrameworkElement
Control
所以亨氏指出你需要從UIElement
順序而獲得的能夠轉換爲UIElement
和DependencyObject
。從個人而言,我看不到DependencyObject
是有用的。我通常會在FrameworkElement
,Control
甚至更高。
您只能從DependencyObject
而不是從UIElement
派生。
感謝AnthonyWJones,其實AnnObject是我在應用程序中使用的第三方控件類.....我不知道我是否可以將其更改爲UIElement。基本上我希望它是UIElement,所以我可以使用ToolTipService,你有什麼想法,我可以做到這一點?再次感謝 – VoodooChild 2010-07-17 15:30:13
@VoodooChild:我能想到的唯一方法就是創建一個基於UIElement的新類,它使用AnnObject作爲組件。 – AnthonyWJones 2010-07-17 18:07:41
@Anthony:這是否意味着我創建了一個類,例如擴展UIElement的InternalAnnObject類,然後將AnnObject作爲它的一個屬性使用?如果沒什麼問題,請您舉個例子更新答案。謝謝。 – VoodooChild 2010-07-18 01:53:10