Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/xamarin/Xamarin.PropertyEditing.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBret Johnson <bret.johnson@microsoft.com>2022-03-17 07:23:25 +0300
committerBret Johnson <bret.johnson@microsoft.com>2022-03-17 07:23:25 +0300
commita2e92bf834987d6e428c53cf8db31a93c04a3151 (patch)
tree9a82069c96aeda99042df1c8f0926ad9fedbd99a
parent6359edaa5c81a0d1697a1ad36807b74388f8ebb2 (diff)
Use PreviewKeyDown for Ctrl+Space to show menu
Ctrl+Space is the keyboard short that can be used to show the property editor menu for a property (with options like Reset, Convert to Local Value, etc.). Previously, that was detected via a KeyBinding in XAML, which worked for text boxes but not controls like checkbox and button, which handle the key down event themselves. Now we use PreviewKeyDown instead, handling that in C# code, to work for all control types. Fixes AB#1491229
-rw-r--r--[-rwxr-xr-x]Xamarin.PropertyEditing.Windows/PropertyPresenter.cs18
-rw-r--r--Xamarin.PropertyEditing.Windows/Themes/Resources.xaml5
2 files changed, 19 insertions, 4 deletions
diff --git a/Xamarin.PropertyEditing.Windows/PropertyPresenter.cs b/Xamarin.PropertyEditing.Windows/PropertyPresenter.cs
index 4cf1813..af7dbbc 100755..100644
--- a/Xamarin.PropertyEditing.Windows/PropertyPresenter.cs
+++ b/Xamarin.PropertyEditing.Windows/PropertyPresenter.cs
@@ -6,6 +6,7 @@ using System.Windows.Automation;
using System.Windows.Automation.Peers;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
+using System.Windows.Input;
using System.Windows.Media;
using Xamarin.PropertyEditing.ViewModels;
@@ -112,6 +113,11 @@ namespace Xamarin.PropertyEditing.Windows
this.variationRow = (RowDefinition) GetTemplateChild ("variationRow");
this.variationsList = GetTemplateChild ("variationsList") as ItemsControl;
+
+ this.propertyButton = (PropertyButton) GetTemplateChild ("propertyButton");
+
+ this.propertyContainer = (Border) GetTemplateChild ("propertyContainer");
+ this.propertyContainer.AddHandler (Border.PreviewKeyDownEvent, new KeyEventHandler (PropertyContainer_PreviewKeyDown));
}
protected override AutomationPeer OnCreateAutomationPeer ()
@@ -155,10 +161,22 @@ namespace Xamarin.PropertyEditing.Windows
}
}
+ private void PropertyContainer_PreviewKeyDown (object sender, KeyEventArgs e)
+ {
+ var isModifierControl = Keyboard.Modifiers == ModifierKeys.Control;
+
+ if (e.Key == Key.Space && isModifierControl) {
+ propertyButton.ShowMenu ();
+ e.Handled = true;
+ }
+ }
+
private PropertyViewModel pvm;
private ButtonBase addButton, removeButton;
private RowDefinition variationRow;
private ItemsControl variationsList;
+ private Border propertyContainer;
+ private PropertyButton propertyButton;
private void OnLoaded (object sender, RoutedEventArgs e)
{
diff --git a/Xamarin.PropertyEditing.Windows/Themes/Resources.xaml b/Xamarin.PropertyEditing.Windows/Themes/Resources.xaml
index 2b0938e..cafc4c0 100644
--- a/Xamarin.PropertyEditing.Windows/Themes/Resources.xaml
+++ b/Xamarin.PropertyEditing.Windows/Themes/Resources.xaml
@@ -1708,10 +1708,7 @@
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="local:PropertyPresenter">
- <Border Padding="{TemplateBinding Padding}" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}">
- <Border.InputBindings>
- <KeyBinding Gesture="CTRL+Space" Command="{StaticResource InvokePropertyButtonCommand}" CommandParameter="{Binding ElementName=propertyButton,Mode=OneTime}" />
- </Border.InputBindings>
+ <Border x:Name="propertyContainer" Padding="{TemplateBinding Padding}" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Name="delveColumn" Width="Auto" />