У меня есть вопрос, похожий на этот, но в более подробной ситуации. Я также пытаюсь реализовать решение, используя шаблон ViewModel View Model. Я также хочу, чтобы эта команда была вызвана, когда левая кнопка мыши нажимается (на самом деле, только на UP ), но только при проверке MouseUpcheckbox . Для Ischecked и проверил значение свойства в MouseleftButtonupevent Handler.
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 ? Каков идиоматический способ справиться с такой ситуацией?>
У меня есть вопрос, похожий на этот, но в более подробной ситуации. Я также пытаюсь реализовать решение, используя шаблон ViewModel View Model. Я также хочу, чтобы эта команда была вызвана, когда левая кнопка мыши нажимается (на самом деле, только на UP ), но только при проверке MouseUpcheckbox . Для Ischecked и проверил значение свойства в MouseleftButtonupevent Handler.
[b] xaml [/b]
[code] 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));
Как я могу перенести этот код из моего представления в ViewModel? Стоит ли использовать прикрепленное свойство? Есть ли способ привязать значение флага с параметром в команде [/code], или, может быть, в обработчике Canexecute ? Каков идиоматический способ справиться с такой ситуацией?>