MVVM Прикрепленное свойство target и оригинальный элемент управления - PullRequest
0 голосов
/ 03 февраля 2012

Я работаю с Attached Property в MVVM и столкнулся с интересной проблемой.

Я делаю прикрепленное свойство WorkType к кнопке следующим образом:

public static DependencyProperty WorkTypeProperty = DependencyProperty.RegisterAttached("WorkType",
           typeof(WorkTypeEnum),
           typeof(MyControl),
           new PropertyMetadata(WorkTypeChanged));

public static void SetWorkType(DependencyObject target, WorkTypeEnum value)
{
    target.SetValue(WorkTypeProperty, value);
}

public static WorkTypeEnum GetWorkType(DependencyObject target)
{
    return (WorkTypeEnum)target.GetValue(WorkTypeProperty);
}

public static void WorkTypeClick(object sender, MouseButtonEventArgs e)
{
    var control = (Control)sender;
    WorkTypeEnume workType = (WorkTypeEnum)control.GetValue(WorkTypeProperty);
    (Instance of MyControl).DoWork(workType); ??? <--How to know the instance of MyControl?
}

private static void WorkTypeChanged(DependencyObject target, DependencyPropertyChangedEventArgs e)
{
    var control = target as Control;
    if (control != null)
    {
        if ((e.NewValue != null) && (e.OldValue == null))
        {
            control.MouseDown += WorkTypeClick;
        }
        else if ((e.NewValue == null) && (e.OldValue != null))
        {
            control.MouseDown -= WorkTypeClick;
        }
    }
}

Мне интересно, какМогу ли я связать WorkType с кнопкой, чтобы она выполняла экземпляр MyControl.DoWork (WorkTypeEnum workType)?

Можно ли в любом случае назначить экземпляр MyControl кнопке?

Большое вам спасибо!

1 Ответ

0 голосов
/ 03 февраля 2012

Вы используете прикрепленное свойство, экземпляр MyControl отсутствует.Если вы хотите передать параметры при нажатии кнопки, возможно, стоит взглянуть на использование Commands .

...