Добавление пользовательских свойств в элементы управления Silverlight - PullRequest
2 голосов
/ 30 марта 2010

Как лучше всего добавить свои собственные свойства в существующий элемент управления Silverlight? Например, я хотел бы связать пользовательский класс с DataGrid и иметь возможность установить свойства этого пользовательского класса в Expression Blend?

Это легко сделать?

Спасибо

AJ

Ответы [ 2 ]

1 голос
/ 30 марта 2010

Другой вариант - использовать прикрепленное поведение / свойство. Это аргумент наследования / композиции - для расширения функциональности класса X вы наследуете от класса X и расширяете его, или вы создаете класс Y, который содержит класс X?

Вот пример того, как кто-то добавляет PixelSnapping в SL с помощью прикрепленного поведения: http://blogs.msdn.com/devdave/archive/2008/06/22/Using-an-Attached-DependencyProperty-to-Implement-Pixel-Snapping-as-an-Attached-Behavior.aspx

1 голос
/ 30 марта 2010

По наследству это довольно легко сделать.

Вот, например, таблица данных, которая запускает событие проверки при нажатии клавиши ввода.

namespace SLCommon
{
    public delegate void VaditateSelectionEventHandler(object sender, EventArgs e);

    /// <summary>
    /// Fires a validate event whenever the enter key or the left mouse button is pressed
    /// </summary>
    public class EventDatagrid : DataGrid
    {
        public event VaditateSelectionEventHandler Validate;

        public EventDatagrid()
            : base()
        {
            this.MouseLeftButtonUp += new MouseButtonEventHandler(OnMouseLeftButtonUp);
        }

        protected override void OnKeyDown(KeyEventArgs e)
        {
            if (e.Key != Key.Enter)
                base.OnKeyDown(e);
            else
            {
                e.Handled = true;
                Validate(this, e);
            }
        }

        protected void OnMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
           Validate(this, e);
        }
    }
}

Сторона XAML:

<slc:EventDatagrid x:Name="toto" Validate="toto_Validate" 
                           AutoGenerateColumns="True"  IsReadOnly="True" Width="auto" MaxHeight="300">
</slc:EventDatagrid>

Обратите внимание на обработчик события Validate.

Здесь после того, как вы можете добавить элемент управления myobj в файл xaml (обязательно укажите правильное пространство имен xmlns: в верхней части вашей страницы) и установите его свойство.

Не знаю о смеси, но она точно так же работает.

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