当视图聚焦在 UWP 上时,不应用 BackgroundColor

Posted

技术标签:

【中文标题】当视图聚焦在 UWP 上时,不应用 BackgroundColor【英文标题】:BackgroundColor is not applied when the View is focused on UWP 【发布时间】:2020-09-08 02:11:12 【问题描述】:

这似乎也是 Entry 中的行为。但我们可以在 Entry using Effects (https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/effects/) 中更改此行为。我们已经尝试过 CustomView 但整个行为都发生了变化 在 Xamarin.Forms 中,UWP 不会更新焦点状态下的背景颜色。在此,我创建了继承自 UWP 中的 TextBox 的“NumericTextBox”。我创建了一个“NumericTextBox_Forms”,继承自 XForms 中的 View。在 UWP Renderer 类中为“NumericTextBox”创建一个新实例并设置本机控件。请在下面找到我的示例。

<StackLayout Padding="0,20,0,0">
        <Entry Keyboard="Numeric">
            <Entry.Effects>
                <local:FocusEffect/>
            </Entry.Effects>
            <Entry.Triggers>
                <Trigger TargetType="Entry" Property="IsFocused" Value="True">
                    <Setter Property="BackgroundColor" Value="Yellow" />
                </Trigger>
            </Entry.Triggers>
        </Entry>
        <NumericTextBox_Forms>
            <NumericTextBox_Forms.Effects>
                <local:FocusEffect/>
            </NumericTextBox_Forms.Effects>
            <NumericTextBox_Forms.Triggers>
                <Trigger TargetType="sync:SfMaskedEdit" Property="IsFocused" Value="True">
                    <Setter Property="BackgroundColor" Value="Blue" />
                </Trigger>
            </NumericTextBox_Forms.Triggers>
        </NumericTextBox_Forms >

    </StackLayout>

【问题讨论】:

【参考方案1】:

View 聚焦在 UWP 上时不应用背景颜色

对于测试 SfMaskedEdit 包含方法内部覆盖IsFocused 触发器。对于该场景,我建议为NumericTextBox_Forms 进行自定义渲染,然后在控制GettingFocus 事件中编辑bg 颜色。

[assembly: ExportRenderer(typeof(NumericTextBox_Forms), typeof(NumericTextBoxRender))]
namespace XamarinEffect.UWP

    public class NumericTextBoxRender :SfMaskedEditRenderer
    
        protected override void OnElementChanged(ElementChangedEventArgs<Syncfusion.XForms.MaskedEdit.SfMaskedEdit> e)
        
            base.OnElementChanged(e);

            if(Control != null)
            
                Control.GettingFocus += Control_GettingFocus;
            
        

        private void Control_GettingFocus(Windows.UI.Xaml.UIElement sender, Windows.UI.Xaml.Input.GettingFocusEventArgs args)
        
            Control.Background = new SolidColorBrush(Colors.Blue);
        
    

我在上面试过了,对我来说效果很好,希望能解决你的问题。

【讨论】:

在聚焦状态下不会更新 uwp 中的背景颜色。我还在下面的链接中附上了示例供您参考。 syncfusion.com/downloads/support/directtrac/general/ze/… @CoCalceDew 有关 Yuvaraj 更新样本的任何经过验证的更新

以上是关于当视图聚焦在 UWP 上时,不应用 BackgroundColor的主要内容,如果未能解决你的问题,请参考以下文章

当输入集中在移动 safari 上时,页面底部出现不需要的填充

Xamarin UWP - 如何摆脱悬停在按钮上时出现的边框

张高兴的 UWP 开发笔记:手机状态栏 StatusBar

如何以编程方式隐藏UWP应用程序键盘?

FLTK:窗口聚焦在 MacOS 上时的事件

当鼠标悬停在另一个 Div 上时为一个 Div 设置动画