在编辑器 Xamarin Forms 中设置 CursorPosition

2023-12-06

我们如何设置CursorPosition in Editor。我们可以设置CursorPostion in Entry,但是如何设置Editor?我知道我们可以使用 Xamarin Forms 中的自定义渲染器来做到这一点,但是如何实现呢?


我们无法设置CursorPosition in Editor当我们设置它时Entry。我们需要使用自定义渲染器.

使用自定义渲染器可以在 Xamarin Forms 中实现大多数本机函数和实现。

设置光标位置Editor在 Xamarin 表单中。 对于像我这样的初学者来说,这个答案可能有点长,所以请耐心等待。

In your 共享项目添加一个类编辑器扩展.cs

public class EditorExtended : Editor
{
}

In your XAML页面添加命名空间以供参考

<xmlns:Local="clr-namespace:ApplicationName.FolderNameThatContainsEditorExtended class">

<!-- If EditorExtended.cs is in "Controls" Folder-->
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage ...
             xmlns:Local="clr-namespace:MyApplication.Controls">
            
             ...

    <StackLayout HorizontalOptions="Center">             
        <Local:EditorExtended x:Name="CustomEditor"></Local:EditorExtended>
    </StackLayout>
  • 现在在你的安卓项目添加自定义渲染器。建立一个文件夹并添加编辑渲染器扩展.cs
[assembly: ExportRenderer(typeof(EditorExtended), typeof(EditorRendererExtended))]
namespace MyApplication.Droid.PlatformSpecific.ExtendedControls
{
    public class EditorRendererExtended : EditorRenderer
    {
        public EditorRendererExtended(Context context) : base(context)
        {
        }

        protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            base.OnElementPropertyChanged(sender, e);
            if (Control != null)
            {
                Control.RequestFocus();                
                Control.SetSelection(Control.Text.Length);                
            }
        }       
    }
}
  • 同样在UWP项目创建一个文件夹并在平台特定代码中添加自定义渲染器。
[assembly: ExportRenderer(typeof(EditorExtended), typeof(EditorRendererExtended))]
namespace MyApplication.UWP.PlatformSpecific.ExtendedControls
{
    public class EditorRendererExtended: EditorRenderer
    {
        public EditorRendererExtended()
        {
        }

        protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            base.OnElementPropertyChanged(sender, e);
            if (Control != null)
            {
                Control.Focus(Windows.UI.Xaml.FocusState.Pointer);
                Control.SelectionStart = Control.Text.Length;
            }
        }
    }
}
  • 我还没有测试过iOS,但方法类似。只需添加编辑渲染器扩展.csiOS 中平台特定文件夹中的类。该代码未经测试,如果您知道解决方案,可以自由编辑答案。这是我已经实现但未经测试的代码。
[assembly:ExportRenderer(typeof(EditorExtended), typeof(EditorRendererExtended))]
namespace MyApplication.iOS.PlatformSpecific.ExtendedControls
{
    public class EditorRendererExtended : EditorRenderer
    {
        public EditorRendererExtended()
        {
        }

        protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            base.OnElementPropertyChanged(sender, e);
            if (Control != null)
            {
                // just change this statement to the one that works.
                Control.SelectedTextRange = Control.GetTextRange(fromPosition: Control.BeginningOfDocument, toPosition: Control.BeginningOfDocument);
            }
        }
    }
}

不要忘记在您想要定位的所有平台特定代码中包含以下语句,否则它将无法工作

[assembly: ExportRenderer(typeof(EditorExtended), typeof(EditorRendererExtended))]

编辑器渲染器扩展每个平台都不同,您可以更改其名称,例如Android 编辑器渲染器扩展 or 编辑器渲染器扩展UWP为了更好的理解。我只是将它们命名为相似的,因为我发现不需要以不同的方式命名它们,并且会使其不必要地冗长。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在编辑器 Xamarin Forms 中设置 CursorPosition 的相关文章

  • Exit() 时是否调用基本对象析构函数?

    我意识到这个问题已经出现过几次 但我试图获得上述问题的明确答案 但我不断遇到相互矛盾的信息 我需要知道的是 当我使用 exit 时 基本类对象是否被破坏 我知道需要删除动态内存 但我的意思更像是 include
  • 如何在 VC++ CString 中验证有效的整数和浮点数

    有人可以告诉我一种有效的方法来验证 CString 对象中存在的数字是有效整数还是浮点数吗 Use tcstol http msdn microsoft com en us library w4z2wdyc aspx and tcstod
  • 在 HKCR 中创建新密钥有效,但不起作用

    我有以下代码 它返回 成功 但使用两种不同的工具使用搜索字符串 3BDAAC43 E734 11D5 93AF 00105A990292 搜索注册表不会产生任何结果 RegistryKey RK Registry ClassesRoot C
  • 尝试了解使用服务打开对话框

    我已经阅读了有关使用 mvvm 模式打开对话框的讨论 我看过几个使用服务的示例 但我不明白所有部分如何组合在一起 我发布这个问题寻求指导 以了解我应该阅读哪些内容 以更好地理解我所缺少的内容 我将在下面发布我所拥有的内容 它确实有效 但从我
  • 将类对象放置在向量中?

    我注意到我可以将一个类放置在一个向量中 这是我的程序 我收到以下错误 out blackjack exe blackjack obj blackjack obj error LNK2019 unresolved external symbo
  • 循环遍历 C 结构中的元素以提取单个元素的值和数据类型

    我有一个要求 我有一个 C 语言的大结构 由大约 30 多个不同数据类型的不同元素组成 typedef struct type1 element1 type2 element2 type3 element3 type2 element4 1
  • 如何将 .txt 文件中的数据转换为 xml? C#

    我在一个文本文件中有数千行数据 我想通过将其转换为更容易搜索的内容来轻松搜索 我希望 XML 或其他类型的大型数据结构 尽管我不确定它是否是最好的对于我的想法 每行的数据如下所示 第 31 册 托马斯 乔治 32 34 154 每本书都不是
  • 什么是空终止字符串?

    它与什么不同标准 字符串 http www cplusplus com reference string string 字符串 实际上只是一个数组chars 空终止字符串是指其中包含空字符的字符串 0 标记字符串的结尾 不一定是数组的结尾
  • 如何使用 ASP.NET Core 获取其他用户的声明

    我仍在学习 ASP NET Core 的身份 我正在进行基于声明的令牌授权 大多数示例都是关于 当前 登录用户的 就我而言 我的 RPC 服务正在接收身份数据库中某个用户的用户名和密码 我需要 验证是否存在具有此类凭据的用户 获取该用户的所
  • 在 C# 中检查 PowerShell 执行策略的最佳方法是什么?

    当你跑步时Get ExecutionPolicy在 PowerShell 中 它得到有效的执行政策 https learn microsoft com en us powershell module microsoft powershell
  • 如何使用 x64 运行 cl?

    我遇到了和这里同样的问题致命错误 C1034 windows h 未设置包含路径 https stackoverflow com questions 931652 fatal error c1034 windows h no include
  • 已发布的 .Net Core 应用程序警告安装 .Net Core,但它已安装

    我制作了一个 WPF 和控制台应用程序 供某人在我无法访问的私人服务器上使用 我使用 Visual Studio 2019 的内置 发布向导 来创建依赖于框架的单文件应用程序 当该人打开 WPF 应用程序时 他们会看到标准警告 他们单击 是
  • 在 C# 中为父窗体中的子窗体控件添加事件处理程序

    我有两种形式 一种是带有按钮和文本框的父表单 单击该按钮时 将打开一个对话框 该子窗体又包含一个文本框和一个按钮 现在我想要的是 每当子表单文本框中的文本更改时 父表单文本框中的文本会自动更改 为了获得这个 我所做的是 Form3 f3 n
  • 如何在 C# 中创建异步方法?

    我读过的每一篇博客文章都会告诉您如何在 C 中使用异步方法 但由于某些奇怪的原因 从未解释如何构建您自己的异步方法来使用 所以我现在有这段代码使用我的方法 private async void button1 Click object se
  • Oauth2中如何同时撤销RefreshToken和使AccessToken失效

    我正在使用 Owin Oauth2 授权和资源服务器相同 开发单页面应用程序 AngularJS Net MVC Json Rest API 的身份验证流程 我选择了 Bearer Token 路由而不是传统的 cookie session
  • C++ 对象用 new 创建,用 free() 销毁;这有多糟糕?

    我正在修改一个相对较大的 C 程序 不幸的是 并不总是清楚我之前的人使用的是 C 还是 C 语法 这是在一所大学的电气工程系 我们 EE 总是想用 C 来做所有事情 不幸的是 在这种情况下 人们实际上可以逃脱惩罚 但是 如果有人创建一个对象
  • C++:为什么 numeric_limits 对它不知道的类型起作用?

    我创建了自己的类型 没有任何比较器 也没有专门化std numeric limits 尽管如此 由于某种原因 std numeric limits
  • Visual Studio 2015 - Web 项目上缺少共享项目参考选项卡

    我从 MSDN 订阅升级到 Visual Studio 2015 因为我非常兴奋地阅读有关共享项目的信息 当我们想要做的只是重用代码时 不再需要在依赖项中管理 21382 个 nuget 包 所以我构建了一个测试共享项目 其中包含一些代码
  • 我可以使用 lambda 函数或 std::function 对象来代替函数指针吗?

    我有一个需要使用的库 它定义了以下内容 typedef void CallbackFunction const int i 并且有一个注册回调的函数 如下所示 void registerCallback CallbackFunction p
  • 如何在 C 中将 char 连接到 char* ?

    我怎样才能前置char c to char myChar 我有c值为 A and myChar值为 LL 我怎样才能前置c to myChar使 ALL 这应该有效 include

随机推荐

  • 在Python模块中强制执行方法顺序[关闭]

    Closed 这个问题是基于意见的 目前不接受答案 处理必须按一定顺序调用方法的模块的最 Pythonic 方法是什么 例如 我有一个 XML 配置 在执行其他操作之前必须读取该配置 因为该配置会影响行为 The parse config
  • Blazor OnAfterRenderAsync 混淆

    我理解这个想法OnAfterRenderAsyc 但我不明白如何实现我想要的 我有OnInitializedAsync 基本上从文件中获取摘要信息 之后 我想调用另外 2 个方法 并根据这 2 个方法返回的信息 我想将一些 HTML 添加到
  • 使用 Linq 获取 CDATA XML 部分

    我到处搜索寻找访问 CDATA 部分文本区域的方法 并发现使用 linq 的非常温暖的解决方案 我需要提取 CDATA 部分中嵌入的 XML 以便提取不同的信息 我有以下 XML
  • 为什么 JSTL 数字格式值不支持运行时表达式?

    我有这个代码
  • 使用 Javascript 检测 Chrome 操作系统

    我想用 Javascript 检测 Chrome 操作系统 并且我正在使用navigator userAgent为了这 现在 我正在运行 Chrome 操作系统 我的导航器 userAgent 是 Mozilla 5 0 X11 CrOS
  • 如何找到 ComboBoxItem 的 ParentComboBox?

    如何获取 ComboBoxItem 的 ParentComboBox 如果按下 Insert 键 我想关闭打开的组合框 var focusedElement Keyboard FocusedElement if focusedElement
  • 如何使 Laravel 的 Validator $rules 成为可选?

    假设我有User模型有两种方法 User php class User extends Eloquent Validation rules private static rules array user gt unique users re
  • Objective-C 中有一些文字字典或数组语法吗?

    总是可以使用 vararg 方法调用创建 NSArray 和 NSDictionaries NSNumber 例如 NSArray arrayWithObjects a b c nil 这些可以在 LLVM 和 Clang 的新改进中使用内
  • 实现react-bootstrap-typeahead的组合框行为

    我正在尝试使用react bootstrap typeahead控制 但我很惊讶试图让它做我想做的事 实际上 我的页面上有其中两个 其中一个正在执行真正的异步查找 另一个我几乎希望表现得像组合框 我想要做的是选择一个项目 然后单击下拉菜单改
  • openCV:为 IplImage 添加透明度

    我有一个 3 通道 IplImage 我想创建一个 4 通道图像并将其 Alpha 通道设置为小于 1 0 的值以使其半透明 首先 我将 alpha 通道 第 4 个通道 设置为 0 5 cvSet Image c4 cvScalar 0
  • 从 NumPy 矩阵中的每一行中取出满足条件的前 N ​​个值

    我有一个numpy vector and a numpy array 我需要从矩阵中的每一行中获取小于 或等于 向量中相应行的前 N 个 比方说 3 个 值 所以如果这是我的向量 7 9 22 38 6 15 这是我的矩阵 20 9 7 5
  • 删除Golang中包含某些子字符串的行

    如何删除以某些子字符串开头的行 byte in Ruby通常我会做这样的事情 lines lines split n reject r r include substring join n 如何执行此操作Go 您可以使用正则表达式来模拟 r
  • Python 中模块的导入文件夹

    python 中是否可以从文件夹 包中获取模块列表并导入它们 我希望能够从类内的函数中执行此操作 以便整个类都可以访问它们 可能是从 init 方法 任何帮助将不胜感激 See the 模块文档 唯一的解决方案是包作者提供明确的 包的索引
  • 记住用户从一页到下一页的选择

    在我的网站上 用户有多种选项 例如语言 日期和区域 当用户单击其中任何一个都很好时 网站会适应特定的选择 但是当他们转到另一个页面时 他们会失去所有选择 如果我找到一种方法在整个访问过程中保留它们 那就太好了24小时 例如 鲍勃进入我的网站
  • Android Studio 的数据绑定模板?

    我决定在我的 Android 项目中使用 DataBinding 库 是否有任何插件 代码模板可用于安装到 Android Studio 中 以使用 Android Studio 的向导自动生成的与 DataBinding 兼容的代码添加新
  • PHP 简单的 html dom 解析器 - 查找单词

    我使用 PHP 简单 html dom 解析器库 我只想将所有 manteau 单词替换为 此处查找单词 这是我下面的代码 它不适用于不在标签中的单词 它仅适用于强标签中的 manteau 一词 如何解析所有节点文本 Note str re
  • 如何将证书添加到 WebClient (C#)?

    我知道向 HttpWebRequest 添加证书非常简单 但是 我还没有找到使用 WebClient 进行等效操作的方法 基本上 我想使用 WebClient 发送带有特定证书的 POST 您将如何使用 WebClient 完成这个确切的代
  • Erlang emysql iPhone Emoji 编码问题

    我正在尝试使用 Erlang 将 iPhone 客户端应用程序中的文本 带有表情符号 存储在 MySQL 数据库上 进入 varchar 列 我曾经使用 C 和 mysqlpp 完成的套接字连接服务器来完成此操作 效果很好 这是完全相同的数
  • 是否有类似 Perl 的 Win32::FileNotify for Linux 或 OS X 的东西?

    我一直在使用Win32 文件通知在 Windows 上 我很想知道 Linux 和 OS X 上是否有类似的东西 我无法使用 Google 找到这样的模块 这里有人知道这样的事情吗 文件 更改通知听起来像是一种跨平台的方式来做到这一点
  • 在编辑器 Xamarin Forms 中设置 CursorPosition

    我们如何设置CursorPosition in Editor 我们可以设置CursorPostion in Entry 但是如何设置Editor 我知道我们可以使用 Xamarin Forms 中的自定义渲染器来做到这一点 但是如何实现呢