In MainView habe ich eine Schaltfläche, die einen Befehl aufruft (wir nennen ihn Execute), der in MainViewModel gespeichert ist. Ich möchte auch, dass dieser Befehl aufgerufen wird, wenn mit der linken Maustaste geklickt wird (eigentlich nur auf Up), aber nur, wenn MouseUpCheckBox aktiviert ist.
Als ich den gesamten Code in der Ansicht hatte, habe ich eine statische Bindung für Execute durchgeführt, dann aber die ElementName-Bindung an das Fenster (benannt w_window) für IsChecked verwendet und den Eigenschaftswert in überprüft MouseLeftButtonUpEvent-Handler.
XAML
Code: Select all
Execute
Execute on Mouse Up
Code: Select all
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
Mobile version