Приведите к флажести и выполните команду в способе MVVMC#

Место общения программистов C#
Anonymous
Приведите к флажести и выполните команду в способе MVVM

Сообщение Anonymous »

У меня есть вопрос, похожий на этот, но в более подробной ситуации. Я также пытаюсь реализовать решение, используя шаблон ViewModel View Model. Я также хочу, чтобы эта команда была вызвана, когда левая кнопка мыши нажимается (на самом деле, только на UP ), но только при проверке MouseUpcheckbox . Для Ischecked и проверил значение свойства в MouseleftButtonupevent Handler.

xaml

Код: Выделить всё

Execute


Execute on Mouse Up

< /code>

 c#< /strong> < /p>

public MainView()
{
InitializeComponent();
this.CommandBindings.Add(new CommandBinding(Execute, ExecuteExecuted));
MyDesigner.AddHandler(UIElement.MouseLeftButtonUpEvent, new RoutedEventHandler((o, eventArgs) =>
{
if (ExecuteOnMouseUp)
{
Execute.Execute(null, this);
}
}), true);
}

#region ExecuteOnMouseUp
/// 
/// ExecuteOnMouseUp Dependency Property
/// 
public static readonly DependencyProperty ExecuteOnMouseUpProperty =
DependencyProperty.Register("ExecuteOnMouseUp", typeof(bool), typeof(MainView),
new FrameworkPropertyMetadata((bool)false));

/// 
/// Gets or sets the ExecuteOnMouseUp property. This dependency property
/// indicates ....
/// 
public bool ExecuteOnMouseUp
{
get { return (bool)GetValue(ExecuteOnMouseUpProperty); }
set { SetValue(ExecuteOnMouseUpProperty, value); }
}
#endregion

#region Execute
/// 
/// The Execute command ....
/// 
public static RoutedUICommand Execute
= new RoutedUICommand("Execute", "Execute", typeof(MainView));

private void ExecuteExecuted(object sender, ExecutedRoutedEventArgs e)
{
...
}
#endregion
< /code>

Как я могу перенести этот код из моего представления в ViewModel? Стоит ли использовать прикрепленное свойство? Есть ли способ привязать значение флага с параметром в команде 
, или, может быть, в обработчике Canexecute ? Каков идиоматический способ справиться с такой ситуацией?>

Подробнее здесь: https://stackoverflow.com/questions/389 ... a-mvvm-way

Вернуться в «C#»