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:
authorBertrand Le Roy <beleroy@microsoft.com>2017-09-30 03:13:42 +0300
committerBertrand Le Roy <beleroy@microsoft.com>2017-11-04 02:35:41 +0300
commit86131789460201cd55d8e29afe0d7ed8dc65f920 (patch)
tree3ad504b77767220eac620a6782ca6bfd75a67424
parenta3cec2176066e25749ec1b4e959bd989695962e4 (diff)
Handle color editor textbox changes.
-rw-r--r--Xamarin.PropertyEditing.Windows.Standalone/MockedSampleControlButton.cs1
-rw-r--r--Xamarin.PropertyEditing.Windows/SolidBrushEditorControl.cs69
-rw-r--r--Xamarin.PropertyEditing.Windows/Themes/Resources.xaml8
3 files changed, 73 insertions, 5 deletions
diff --git a/Xamarin.PropertyEditing.Windows.Standalone/MockedSampleControlButton.cs b/Xamarin.PropertyEditing.Windows.Standalone/MockedSampleControlButton.cs
index 4b16dbd..dbaf1a7 100644
--- a/Xamarin.PropertyEditing.Windows.Standalone/MockedSampleControlButton.cs
+++ b/Xamarin.PropertyEditing.Windows.Standalone/MockedSampleControlButton.cs
@@ -1,4 +1,3 @@
-using System.Drawing;
using Xamarin.PropertyEditing.Drawing;
using Xamarin.PropertyEditing.Tests.MockControls;
diff --git a/Xamarin.PropertyEditing.Windows/SolidBrushEditorControl.cs b/Xamarin.PropertyEditing.Windows/SolidBrushEditorControl.cs
index 32b0daa..6725d89 100644
--- a/Xamarin.PropertyEditing.Windows/SolidBrushEditorControl.cs
+++ b/Xamarin.PropertyEditing.Windows/SolidBrushEditorControl.cs
@@ -1,3 +1,10 @@
+using System.Text.RegularExpressions;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Input;
+using Xamarin.PropertyEditing.Drawing;
+using Xamarin.PropertyEditing.ViewModels;
+
namespace Xamarin.PropertyEditing.Windows
{
internal class SolidBrushEditorControl
@@ -7,5 +14,67 @@ namespace Xamarin.PropertyEditing.Windows
{
DefaultStyleKey = typeof (SolidBrushEditorControl);
}
+
+ TextBox redEntry;
+ TextBox greenEntry;
+ TextBox blueEntry;
+ TextBox alphaEntry;
+
+ SolidBrushPropertyViewModel ViewModel => DataContext as SolidBrushPropertyViewModel;
+
+ public override void OnApplyTemplate ()
+ {
+ base.OnApplyTemplate ();
+
+ redEntry = (TextBox)GetTemplateChild ("redEntry");
+ redEntry.PreviewTextInput += ConstrainToDigits;
+ redEntry.LostFocus += (s, e) => Update();
+ greenEntry = (TextBox)GetTemplateChild ("greenEntry");
+ greenEntry.PreviewTextInput += ConstrainToDigits;
+ greenEntry.LostFocus += (s, e) => Update ();
+ blueEntry = (TextBox)GetTemplateChild ("blueEntry");
+ blueEntry.PreviewTextInput += ConstrainToDigits;
+ blueEntry.LostFocus += (s, e) => Update ();
+ alphaEntry = (TextBox)GetTemplateChild ("alphaEntry");
+ alphaEntry.PreviewTextInput += ConstrainToDigits;
+ alphaEntry.LostFocus += (s, e) => Update ();
+ }
+
+ private void Update ()
+ {
+ var oldColor = ViewModel.Value.Color;
+ var newColor = new CommonColor (oldColor.R, oldColor.G, oldColor.B, oldColor.A);
+ if (byte.TryParse (redEntry.Text, out byte newRed)) {
+ newColor.R = newRed;
+ }
+ else {
+ redEntry.Text = oldColor.R.ToString();
+ }
+ if (byte.TryParse (greenEntry.Text, out byte newGreen)) {
+ newColor.G = newGreen;
+ }
+ else {
+ greenEntry.Text = oldColor.G.ToString ();
+ }
+ if (byte.TryParse (blueEntry.Text, out byte newBlue)) {
+ newColor.B = newBlue;
+ }
+ else {
+ blueEntry.Text = oldColor.B.ToString ();
+ }
+ if (byte.TryParse (alphaEntry.Text, out byte newAlpha)) {
+ newColor.A = newAlpha;
+ }
+ else {
+ alphaEntry.Text = oldColor.A.ToString ();
+ }
+ ViewModel.Value = new CommonSolidBrush (newColor);
+ }
+
+ static readonly Regex digitsOnly = new Regex ("^[0-9]?$");
+ private void ConstrainToDigits (object sender, TextCompositionEventArgs e)
+ {
+ e.Handled = !digitsOnly.IsMatch(e.Text);
+ }
}
}
diff --git a/Xamarin.PropertyEditing.Windows/Themes/Resources.xaml b/Xamarin.PropertyEditing.Windows/Themes/Resources.xaml
index 1d6036e..84bdd26 100644
--- a/Xamarin.PropertyEditing.Windows/Themes/Resources.xaml
+++ b/Xamarin.PropertyEditing.Windows/Themes/Resources.xaml
@@ -334,19 +334,19 @@
</Canvas>
<DockPanel Grid.Column="2" HorizontalAlignment="Stretch" Grid.Row="0" VerticalAlignment="Top">
<Label Content="R" HorizontalAlignment="Left" VerticalAlignment="Center" DockPanel.Dock="Left" />
- <local:IntegerUpDownControl Name="redEntry" Margin="14,0,2,0" Value="{Binding Value.Color.R}" MaximumValue="255" MinimumValue="0" IsEnabled="{Binding Property.CanWrite,Mode=OneTime}" AutomationProperties.HelpText="Red" VerticalAlignment="Center" DockPanel.Dock="Left"/>
+ <TextBox Name="redEntry" Margin="14,0,2,0" Text="{Binding Value.Color.R,Mode=OneTime}" IsEnabled="{Binding Property.CanWrite,Mode=OneTime}" AutomationProperties.HelpText="Red" VerticalAlignment="Center" DockPanel.Dock="Left"/>
</DockPanel>
<DockPanel Grid.Column="2" HorizontalAlignment="Stretch" Grid.Row="1" VerticalAlignment="Top">
<Label Content="G" HorizontalAlignment="Left" VerticalAlignment="Center" DockPanel.Dock="Left" />
- <local:IntegerUpDownControl Name="greenEntry" Margin="14,0,2,0" Value="{Binding Value.Color.G}" MaximumValue="255" MinimumValue="0" IsEnabled="{Binding Property.CanWrite,Mode=OneTime}" AutomationProperties.HelpText="Green" VerticalAlignment="Center" DockPanel.Dock="Left"/>
+ <TextBox Name="greenEntry" Margin="14,0,2,0" Text="{Binding Value.Color.G,Mode=OneTime}" IsEnabled="{Binding Property.CanWrite,Mode=OneTime}" AutomationProperties.HelpText="Green" VerticalAlignment="Center" DockPanel.Dock="Left"/>
</DockPanel>
<DockPanel Grid.Column="2" HorizontalAlignment="Stretch" Grid.Row="2" VerticalAlignment="Top">
<Label Content="B" HorizontalAlignment="Left" VerticalAlignment="Center" DockPanel.Dock="Left" />
- <local:IntegerUpDownControl Name="blueEntry" Margin="14,0,2,0" Value="{Binding Value.Color.B}" MaximumValue="255" MinimumValue="0" IsEnabled="{Binding Property.CanWrite,Mode=OneTime}" AutomationProperties.HelpText="Blue" VerticalAlignment="Center" DockPanel.Dock="Left"/>
+ <TextBox Name="blueEntry" Margin="14,0,2,0" Text="{Binding Value.Color.B,Mode=OneTime}" IsEnabled="{Binding Property.CanWrite,Mode=OneTime}" AutomationProperties.HelpText="Blue" VerticalAlignment="Center" DockPanel.Dock="Left"/>
</DockPanel>
<DockPanel Grid.Column="2" HorizontalAlignment="Stretch" Grid.Row="3" VerticalAlignment="Top">
<Label Content="A" HorizontalAlignment="Left" VerticalAlignment="Center" DockPanel.Dock="Left" />
- <local:IntegerUpDownControl Name="alphaEntry" Margin="14,0,2,0" Value="{Binding Value.Color.A}" MaximumValue="255" MinimumValue="0" IsEnabled="{Binding Property.CanWrite,Mode=OneTime}" AutomationProperties.HelpText="Alpha" VerticalAlignment="Center" DockPanel.Dock="Left"/>
+ <TextBox Name="alphaEntry" Margin="14,0,2,0" Text="{Binding Value.Color.A,Mode=OneTime}" IsEnabled="{Binding Property.CanWrite,Mode=OneTime}" AutomationProperties.HelpText="Alpha" VerticalAlignment="Center" DockPanel.Dock="Left"/>
</DockPanel>
<Rectangle Name="colorChooser" Grid.Column="0" Grid.ColumnSpan="2" Grid.Row="3" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Height="15" Margin="3" Stroke="Black">
<Rectangle.Fill>