2010-07-16 27 views
2

Я получаю ошибку во время выполнения, когда я это делаю.Ошибка выполнения для UIElement во время выполнения

У меня есть этот класс:

public abstract class AnnObject : DependencyObject 

и когда я делаю это компилируется нормально, но вызывает ошибку во время выполнения ...

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

Я получаю ошибку не может бросить AnnObject в UIElement ,

Может кто-нибудь коротко объяснить это поведение?

ответ

4

Класс hiearchy в Silverlight для компонентов пользовательского интерфейса является: -

DependencyObject 
    UIElement 
    FrameworkElement 
     Control 

Итак, как Heinz указывает, Вы должны были бы быть получены из UIElement для того, чтобы иметь возможность бросить в UIElement и DependencyObject. Лично я не вижу, что это получается из DependencyObject. Обычно я начинал с FrameworkElement, Control или даже выше.

+0

Спасибо AnthonyWJones, на самом деле AnnObject является сторонним классом контроля, который я использую в своем приложении ..... Интересно, могу ли я изменить его на UIElement. В принципе, я хочу, чтобы это было UIElement, поэтому я могу использовать ToolTipService на нем, есть ли у вас какие-либо идеи, как я могу это сделать ??? Еще раз спасибо – VoodooChild

+0

@VoodooChild: Единственный способ, которым я могу думать, - это создать новый класс на основе UIElement, который использует объект AnnObject как компонент. – AnthonyWJones

+0

@ Энтони: Означает ли это, что я создаю класс, например InternalAnnObject, который расширяет UIElement, а затем использует AnnObject как один из его свойств? Если это не так много, не могли бы вы обновить свой ответ на примере? Благодарю. – VoodooChild

2

Вы делаете только из DependencyObject, а не из UIElement.

Смежные вопросы