Добавить свойство в не определенные пользователем классы - PullRequest
0 голосов
/ 11 мая 2011

Мы постоянно используем элементы управления, например кнопку, и иногда нам может понадобиться добавить некоторые пользовательские свойства для этой кнопки.Например, numberOfTimesClicked и т. Д. В настоящее время я работаю с GridViewColumnHeader и хочу добавить свойство columnIndex в этот класс.Я знаю, что могу отслеживать столбцы с помощью других методов, но мне просто интересно узнать, можем ли мы добавить дополнительные свойства в классы.Например, я думал о наследовании.Если я создаю новый класс и наследую от класса, который я хочу добавить новые свойства (в моем случае GridViewColumnHeader), то я думаю, что это должно работать, но по какой-то причине я получаю ошибки в своем коде всякий раз, когда я делаю что-то вроде:

private class MyGridViewColumnHeader : GridViewColumnHeader
{
    public int propertyThatIWantToAdd { get; set; }
}

с этого момента, если я создаю экземпляры объектов из класса MyGridViewColumnHeader вместо класса GridViewColumnHeader, я получаю ошибки.Что плохого в использовании наследования для достижения этой цели?

Ответы [ 2 ]

0 голосов
/ 11 мая 2011

Вместо приведения объекта sender используйте

e.OriginalSource as MyGridViewColumnHeader

И выполняйте свою работу над этим объектом.Если вам нужно узнать, что внутри RoutedEventArgs, посмотрите на MSDN

0 голосов
/ 11 мая 2011

Вы должны сделать класс public, модификатор private разрешен только для внутренних классов.

Также вы должны использовать Свойства зависимостей вместо обычных свойств, если вы хотите получить доступ к свойству в XAML.

...