зеркало из https://github.com/DeGsoft/maui-linux.git
Make Editor focused background color behavior consistent with Entry on Windows (#456)
This commit is contained in:
Родитель
8d03598812
Коммит
dbd4390c5b
|
@ -0,0 +1,44 @@
|
|||
using Xamarin.Forms.CustomAttributes;
|
||||
using Xamarin.Forms.Internals;
|
||||
|
||||
namespace Xamarin.Forms.Controls
|
||||
{
|
||||
[Preserve(AllMembers = true)]
|
||||
[Issue(IssueTracker.Bugzilla, 44584,
|
||||
"UWP - Editor: changing the background color will only take effect after the entry gained focus")]
|
||||
public class Bugzilla44584 : TestContentPage
|
||||
{
|
||||
protected override void Init()
|
||||
{
|
||||
var instructions = new Label
|
||||
{
|
||||
Text = @"
|
||||
Tap the first button once to turn the Entry background color to Green. Tap the Entry to focus it; the background should remain green; if it does not, the test has failed.
|
||||
Tap the second button once to turn the Editor background color to Green. Tap the Editor to focus it; the background should remain green; if it does not, the test has failed."
|
||||
};
|
||||
|
||||
var entryButton = new Button { Text = "Toggle Entry Background (Green/Default)" };
|
||||
var entry = new Entry();
|
||||
|
||||
entryButton.Clicked +=
|
||||
(sender, args) => { entry.BackgroundColor = entry.BackgroundColor != Color.Green ? Color.Green : Color.Default; };
|
||||
|
||||
var editorButton = new Button { Text = "Toggle Editor Background (Green/Default)" };
|
||||
var editor = new Editor()
|
||||
{
|
||||
HeightRequest = 80
|
||||
};
|
||||
|
||||
editorButton.Clicked +=
|
||||
(sender, args) => { editor.BackgroundColor = editor.BackgroundColor != Color.Green ? Color.Green : Color.Default; };
|
||||
|
||||
var layout = new StackLayout
|
||||
{
|
||||
VerticalOptions = LayoutOptions.Center,
|
||||
Children = { instructions, entryButton, entry, editorButton, editor }
|
||||
};
|
||||
|
||||
Content = layout;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -128,6 +128,7 @@
|
|||
<Compile Include="$(MSBuildThisFileDirectory)Bugzilla43516.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Bugzilla44166.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Bugzilla44461.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Bugzilla44584.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Bugzilla42832.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Bugzilla44044.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)CarouselAsync.cs" />
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
using System.ComponentModel;
|
||||
using Windows.UI.Xaml;
|
||||
using Windows.UI.Xaml.Controls;
|
||||
using Windows.UI.Xaml.Media;
|
||||
|
||||
#if WINDOWS_UWP
|
||||
|
||||
|
@ -10,9 +11,10 @@ namespace Xamarin.Forms.Platform.UWP
|
|||
namespace Xamarin.Forms.Platform.WinRT
|
||||
#endif
|
||||
{
|
||||
public class EditorRenderer : ViewRenderer<Editor, TextBox>
|
||||
public class EditorRenderer : ViewRenderer<Editor, FormsTextBox>
|
||||
{
|
||||
bool _fontApplied;
|
||||
Brush _backgroundColorFocusedDefaultBrush;
|
||||
|
||||
protected override void OnElementChanged(ElementChangedEventArgs<Editor> e)
|
||||
{
|
||||
|
@ -20,7 +22,12 @@ namespace Xamarin.Forms.Platform.WinRT
|
|||
{
|
||||
if (Control == null)
|
||||
{
|
||||
var textBox = new TextBox { AcceptsReturn = true, TextWrapping = TextWrapping.Wrap };
|
||||
var textBox = new FormsTextBox
|
||||
{
|
||||
AcceptsReturn = true,
|
||||
TextWrapping = TextWrapping.Wrap,
|
||||
Style = Windows.UI.Xaml.Application.Current.Resources["FormsTextBoxStyle"] as Windows.UI.Xaml.Style
|
||||
};
|
||||
|
||||
SetNativeControl(textBox);
|
||||
|
||||
|
@ -50,6 +57,8 @@ namespace Xamarin.Forms.Platform.WinRT
|
|||
|
||||
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
|
||||
{
|
||||
base.OnElementPropertyChanged(sender, e);
|
||||
|
||||
if (e.PropertyName == Editor.TextColorProperty.PropertyName)
|
||||
{
|
||||
UpdateTextColor();
|
||||
|
@ -70,8 +79,6 @@ namespace Xamarin.Forms.Platform.WinRT
|
|||
{
|
||||
UpdateText();
|
||||
}
|
||||
|
||||
base.OnElementPropertyChanged(sender, e);
|
||||
}
|
||||
|
||||
void OnLostFocus(object sender, RoutedEventArgs e)
|
||||
|
@ -79,6 +86,20 @@ namespace Xamarin.Forms.Platform.WinRT
|
|||
Element.SendCompleted();
|
||||
}
|
||||
|
||||
protected override void UpdateBackgroundColor()
|
||||
{
|
||||
base.UpdateBackgroundColor();
|
||||
|
||||
if (Control == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// By default some platforms have alternate default background colors when focused
|
||||
BrushHelpers.UpdateColor(Element.BackgroundColor, ref _backgroundColorFocusedDefaultBrush,
|
||||
() => Control.BackgroundFocusBrush, brush => Control.BackgroundFocusBrush = brush);
|
||||
}
|
||||
|
||||
void OnNativeTextChanged(object sender, Windows.UI.Xaml.Controls.TextChangedEventArgs args)
|
||||
{
|
||||
Element.SetValueCore(Editor.TextProperty, Control.Text);
|
||||
|
|
|
@ -111,7 +111,7 @@ namespace Xamarin.Forms.Platform.WinRT
|
|||
if (Device.Idiom == TargetIdiom.Phone)
|
||||
{
|
||||
// If we're on the phone, we need to grab this from the template
|
||||
// so we can manually handle it's background when focused
|
||||
// so we can manually handle its background when focused
|
||||
_borderElement = (Border)GetTemplateChild("BorderElement");
|
||||
}
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче