Проблема наследования пользовательского элемента управления Silverlight - PullRequest
3 голосов
/ 05 декабря 2011

Итак, у меня есть следующий элемент управления в SL4 ...

XAML:

<Canvas x:Class="LineAnnotation"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Canvas.Left="0" Canvas.Top="0" Loaded="Canvas_Loaded"  >
</Canvas>

CodeBehind:

public partial class LineAnnotation : Canvas
    {


        public LineAnnotation()
        {
            InitializeComponent();

        }


        void Canvas_Loaded(object sender, RoutedEventArgs e)
        {
            this.Height = ((Canvas)this.Parent).Height;
            this.Width = ((Canvas)this.Parent).Width;
        }
    }

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

public class ArrowAnnotation : LineAnnotation
{

    public ArrowAnnotation() : base() 
    {
        // Some other init stuff
    }

} 

Когда я пытаюсь создать один из них в моем коде, я получаю следующее исключение:

System.Windows.Markup.XamlParseException: Failed to assign to property 'System.Windows.FrameworkElement.Loaded'. [Line: 5 Position: 47]
   at System.Windows.Application.LoadComponent(Object component, Uri resourceLocator)
   at LineAnnotation.InitializeComponent()
   at LineAnnotation..ctor()

Это не простоЗагруженное событие, это может быть любой обработчик события, я получаю то же исключение.Этот код используется совместно с проектом WPF, и это прекрасно работает.Любая идея, в чем проблема здесь?

РЕДАКТИРОВАТЬ: я понял, что ArrowAnnotation не должен быть частичным классом, так как нет xaml.изменение этого не имело никакого значения.

1 Ответ

2 голосов
/ 05 декабря 2011

Похоже, что вы не можете сделать это.Вы можете подключить обработчики в коде позади или реализовать обработчики в подклассе.

http://forums.silverlight.net/t/148606.aspx/1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...