将附加属性应用到Xamarin条目和编辑器以强制大写并在应用程序中设置其样式,资源

f2uvfpb9  于 2023-03-06  发布在  其他
关注(0)|答案(1)|浏览(103)

我一直在寻找一种方法来创建一个附加属性几乎完全像这个Is It possible to set a Keyboard to "Sentence Capitalisation" in XAML for an Entry?但是我不知道如何实现它。目前我正在创建KeyboardStyles类在一个控制文件夹下的共同项目。它应该在Android和iOS项目?它应该在代码背后?ViewModel?我已经尝试了一切没有运气。我的最终目标是在我的全局样式中应用这个setter(或类似的东西):

<Setter Property="local:KeyboardStyle.KeyboardFlags"
        Value="Suggestions,CapitalizeCharacter"

否则我将不得不访问每个控件并设置它大约100次。

w8rqjzmb

w8rqjzmb1#

我测试了代码的情况下提供的答案,它的访问器丢失:GetSet方法:

public class KeyboardStyle
{
    public static BindableProperty KeyboardFlagsProperty = BindableProperty.CreateAttached
    (
        propertyName: "KeyboardFlags", 
        returnType: typeof(string), 
        declaringType: typeof(InputView), 
        defaultValue: null, 
        defaultBindingMode: BindingMode.OneWay, 
        propertyChanged: HandleKeyboardFlagsChanged
    );
    public static string GetKeyboardFlags(InputView view)
    {
        return (string)view.GetValue(KeyboardFlagsProperty);
    }
    public static void SetKeyboardFlags(InputView view, string value)
    {
        view.SetValue(KeyboardFlagsProperty, value);
    }

    ...

}

然后您可以在App. xaml中使用它:

<Application xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:local="clr-namespace:forms" 
             x:Class="forms.App">
    <Application.Resources>
        <Style TargetType="Entry">
            <Setter Property="local:KeyboardStyle.KeyboardFlags" 
                    Value="Spellcheck,CapitalizeSentence"/>
        </Style>
    </Application.Resources>
</Application>

效果很好。
详细信息请参考官方创建附加属性的访问器。

相关问题