如何在 Xamarin Forms 中从 ViewModel 设置焦点

2024-03-22

我想要设定焦点 in a SearchBox进行一些异步操作后进行控制,我想这样做from my 视图模型.

我怎样才能做到这一点?

EDIT

视图模型代码:

    private bool _searchBarFocused;

    public bool SearchBarFocused
    {
        get { return _searchBarFocused; }
        set
        {
            _searchBarFocused = value;
            base.OnPropertyChanged("SearchBarFocused");
        }
    }

    public async Task InitializeData()
    {
        // Other operations...

        SearchBarFocused = true;
    }

View的代码隐藏代码:

    protected override void OnAppearing()
    {
        base.OnAppearing();
        (this.BindingContext as MyViewModel).InitializeData();
    }

搜索栏XAML代码:

  <SearchBar SearchCommand="{Binding SearchItemsCommand}">
    <SearchBar.Triggers>
      <DataTrigger TargetType="SearchBar"
                   Binding="{Binding SearchBarFocused, Mode=TwoWay}" Value="True">
        <Trigger.EnterActions>
          <triggers:SearchBarFocusTriggerAction Focused="True" />
        </Trigger.EnterActions>

        <Trigger.ExitActions>
          <triggers:SearchBarFocusTriggerAction Focused="False" />
        </Trigger.ExitActions>
      </DataTrigger>
    </SearchBar.Triggers>
  </SearchBar>

触发动作代码:

public class SearchBarFocusTriggerAction : TriggerAction<SearchBar>
{
    public bool Focused { get; set; }

    protected override void Invoke(SearchBar searchBar)
    {
        if (Focused)
            searchBar.Focus();
        else
            searchBar.Unfocus();
    }
}

选项之一是使用触发器(XAML 方式):

 <SearchBar x:Name="searchBar"
       Text=""
       Placeholder="type something">
    <SearchBar.Triggers>

        <DataTrigger TargetType="SearchBar"
                     Binding="{Binding ViewModelIsSearchBarFocused}"
                     Value="True">

            <Trigger.EnterActions>
                <local:FocusTriggerAction Focused="True" />
            </Trigger.EnterActions>

            <Trigger.ExitActions>
                <local:FocusTriggerAction Focused="False" />
            </Trigger.ExitActions>

        </DataTrigger>   

        <EventTrigger Event="Unfocused">
            <local:UnfocusedTriggerAction />
        </EventTrigger>    

    </SearchBar.Triggers>       
</SearchBar>
public class FocusTriggerAction : TriggerAction<SearchBar>
{
    public bool Focused { get; set; }

    protected override async void Invoke (SearchBar searchBar)
    {
        await Task.Delay(1000);

        if (Focused)
        {
            searchBar.Focus();
        }
        else
        {
            searchBar.UnFocus();
        }
    }
}

public class UnfocusedTriggerAction : TriggerAction<SearchBar>
{
    protected override void Invoke (SearchBar searchBar)
    {
        YourViewModel.ViewModelIsSearchBarFocused = false;
    }
}

在这里阅读更多内容:https://developer.xamarin.com/guides/cross-platform/xamarin-forms/working-with/triggers/ https://developer.xamarin.com/guides/cross-platform/xamarin-forms/working-with/triggers/

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

如何在 Xamarin Forms 中从 ViewModel 设置焦点 的相关文章

  • 创建 DirectoryEntry 实例以供测试使用

    我正在尝试创建 DirectoryEntry 的实例 以便可以使用它来测试将传递 DirectoryEntry 的一些代码 然而 尽管进行了很多尝试 我还是找不到实例化 DE 并初始化它的 PropertyCollection 的方法 我有
  • 嵌入式系统中的malloc [重复]

    这个问题在这里已经有答案了 我正在使用嵌入式系统 该应用程序在 AT91SAMxxxx 和 cortex m3 lpc17xxx 上运行 我正在研究动态内存分配 因为它会极大地改变应用程序的外观 并给我更多的力量 我认为我唯一真正的路线是为
  • C# 中值类型和引用类型有什么区别? [复制]

    这个问题在这里已经有答案了 我知道一些差异 值类型存储在堆栈上 而引用类型存储在托管堆上 值类型变量直接包含它们的值 而引用变量仅包含对托管堆上创建的对象位置的引用 我错过了任何其他区别吗 如果是的话 它们是什么 请阅读 堆栈是一个实现细节
  • 将字符串从非托管代码传递到托管

    我在将字符串从非托管代码传递到托管代码时遇到问题 在我的非托管类中 非托管类 cpp 我有一个来自托管代码的函数指针 TESTCALLBACK FUNCTION testCbFunc TESTCALLBACK FUNCTION 接受一个字符
  • 使用 C# 在 WinRT 中获取可用磁盘空间

    DllImport kernel32 dll SetLastError true static extern bool GetDiskFreeSpaceEx string lpDirectoryName out ulong lpFreeBy
  • 如何针对 Nancy 中的 Active Directory 进行身份验证?

    这是一篇过时的文章 但是http msdn microsoft com en us library ff650308 aspx paght000026 step3 http msdn microsoft com en us library
  • WinRT 中的数据触发器?

    我能够找到事件触发 http msdn microsoft com en us library windows apps windows ui xaml eventtrigger 28v VS 85 29 aspx然而 在 WinRT 参考
  • 当 Cortex-M3 出现硬故障时如何保留堆栈跟踪?

    使用以下设置 基于 Cortex M3 的 C gcc arm 交叉工具链 https launchpad net gcc arm embedded 使用 C 和 C FreeRtos 7 5 3 日食月神 Segger Jlink 与 J
  • 在 ASP.Net Core 2.0 中导出到 Excel

    我曾经使用下面的代码在 ASP NET MVC 中将数据导出到 Excel Response AppendHeader content disposition attachment filename ExportedHtml xls Res
  • 线程、进程和 Application.Exit()

    我的应用程序由主消息循环 GUI 和线程 Task Factory 组成 在线程中我调用一些第三方应用程序var p new Process 但是当我调用Application Exit 在消息循环中 我可以看到在线程中启动的进程仍在内存中
  • 我的 strlcpy 版本

    海湾合作委员会 4 4 4 c89 我的程序做了很多字符串处理 我不想使用 strncpy 因为它不会终止 我不能使用 strlcpy 因为它不可移植 只是几个问题 我怎样才能让我的函数正常运行 以确保它完全安全稳定 单元测试 这对于生产来
  • 可空属性与可空局部变量

    我对以下行为感到困惑Nullable types class TestClass public int value 0 TestClass test new TestClass Now Nullable GetUnderlyingType
  • 将日期参数传递给对 MVC 操作的 ajax 调用的安全方法

    我有一个 MVC 操作 它的参数之一是DateTime如果我通过 17 07 2012 它会抛出一个异常 指出参数为空但不能有空值 但如果我通过01 07 2012它被解析为Jan 07 2012 我将日期传递给 ajax 调用DD MM
  • 已过时 - OpenCV 的错误模式

    我正在使用 OpenCV 1 进行一些图像处理 并且对 cvSetErrMode 函数 它是 CxCore 的一部分 感到困惑 OpenCV 具有三种错误模式 叶 调用错误处理程序后 程序终止 Parent 程序没有终止 但错误处理程序被调
  • 在 ASP.NET 中将事件冒泡为父级

    我已经说过 ASP NET 中的层次结构 page user control 1 user control 2 control 3 我想要做的是 当控件 3 它可以是任何类型的控件 我一般都想这样做 让用户用它做一些触发回发的事情时 它会向
  • 窗体最大化时自动缩放子控件

    有没有办法在最大化屏幕或更改分辨率时使 Windows 窗体上的所有内容自动缩放 我发现手动缩放它是正确的 但是当切换分辨率时我每次都必须更改它 this AutoScaleDimensions new System Drawing Siz
  • 将变量分配给另一个变量,并将一个变量的更改反映到另一个变量中

    是否可以将一个变量分配给另一个变量 并且当您更改第二个变量时 更改会瀑布式下降到第一个变量 像这样 int a 0 int b a b 1 现在 b 和 a 都 1 我问这个问题的原因是因为我有 4 个要跟踪的对象 并且我使用名为 curr
  • C++ 成员函数中的“if (!this)”有多糟糕?

    如果我遇到旧代码if this return 在应用程序中 这种风险有多严重 它是一个危险的定时炸弹 需要立即在应用程序范围内进行搜索和销毁工作 还是更像是一种可以悄悄留在原处的代码气味 我不打算writing当然 执行此操作的代码 相反
  • 如何将字符串“07:35”(HH:MM) 转换为 TimeSpan

    我想知道是否有办法将 24 小时时间格式的字符串转换为 TimeSpan 现在我有一种 旧时尚风格 string stringTime 07 35 string values stringTime Split TimeSpan ts new
  • 不同类型的指针可以互相分配吗?

    考虑到 T1 p1 T2 p2 我们可以将 p1 分配给 p2 或反之亦然吗 如果是这样 是否可以不使用强制转换来完成 或者我们必须使用强制转换 首先 让我们考虑不进行强制转换的分配 C 2018 6 5 16 1 1 列出了简单赋值的约束

随机推荐

  • 从 GWT 访问 Web 服务

    有什么方法可以使用 GWT 的 WSDL 访问 Web 服务吗 以前我试图使用 ws import 生成的类 但后来有人向我指出 GWT 无法处理所有 Java 只能处理它的一个子集 因此它无法理解 ws import 类 感谢致敬 Krt
  • 为什么默认情况下不使用 Control.Monad.Instances 实现 (->)

    我正在读书LYAH http learnyouahaskell com functors applicative functors and monoids 它说我需要显式加载Control Monad Instances使以下语法起作用 f
  • 验证关联的唯一性

    给定以下课程 class Candidate has many applications has many companies through gt job offers end class JobOffer belongs to comp
  • c++ 仅读取文本文件最后一行的最快方法?

    我只想读取文本文件的最后一行 我在 UNIX 上 可以使用 Boost 我知道的所有方法都需要扫描整个文件才能获取最后一行 这根本没有效率 有没有一种有效的方法只获取最后一行 另外 我需要它足够强大 即使有问题的文本文件不断被另一个进程附加
  • 使用 c:foreach (JSP/JSTL) 迭代 ArrayList,变量不起作用

    我知道 关于我的问题有无数的例子 但我经历了很多 但无法弄清楚我的错误在哪里 我正在迭代 ArrayList TestSzenario TestSzenario 类包含一个名为 name 的字符串变量 具有适当的 getter 和 sett
  • SQLWITH子句示例[重复]

    这个问题在这里已经有答案了 我试图了解如何使用WITH条款和目的WITH clause 我所明白的是 WITH子句是普通子查询的替代品 谁能用一个小例子详细向我解释这一点 SQL WITH 子句是 Oracle 在 Oracle 9i 第
  • Spring MVC 为什么这个 Hello World 在没有注释驱动标签的情况下运行良好(与任何其他 Spring 项目不同)

    我已经开始学习 Spring MVC 阅读本教程 http viralpatel net blogs spring 3 mvc create hello world application spring 3 mvc http viralpa
  • Java中调整BufferedImage的亮度和对比度

    我正在使用一些框架处理一堆图像 而我得到的只是一堆BufferedImage对象 不幸的是 这些图像真的很暗 我想把它们调亮并稍微调整一下对比度 就像是 BufferedImage image something getImage imag
  • 假设一次有多个 AWS IAM 角色

    有时 我需要访问多个 AWS 资源 我可以使用单独的 IAM 角色单独访问这些资源 如果我需要一起使用这些资源 我目前必须找出一个非本地连接器 如果我可以同时访问这些资源 有时我可以使用 AWS 连接器同时连接这两个资源 例如 https
  • cmake find_path/find_library 检查失败

    我在用着CMake 2 8 2 http www cmake org Wiki CMake 2 8 2 Docs版本 该项目使用大量外部文件和自定义库 无法通过 find package 获得 并且有一长串元素 如下所示 find path
  • 执行maven命令后出现“您指定的目标需要执行一个项目但此目录中没有POM”错误

    我有一个pom xml in C Users AArmijos Desktop Factura Electronica MIyT componentes 1 0 4 sources pom xml我执行了 mvn install insta
  • 单击表格行删除按钮后删除表格行

    解决方案可以使用 jQuery 或纯 JavaScript 我想在用户单击表行单元格中包含的相应按钮后删除表行 例如 table tr td td tr table
  • java.lang.Integer 无法转换为 java.math.BigInteger

    我是 hibernate 和 Mssql 的新手 我正在研究 MySQL 到 Mssql 的集成 我面临这个异常 java lang ClassCastException java lang Integer无法转换为java math Bi
  • 是否可以使用 flutter 相机插件流式传输视频?

    我一直在使用相机插件 我知道可以通过CameraController与功能start stopVideoRecording 这些函数将采用文件的路径作为输入 我希望能够在录制时将该视频流式传输到服务器 是否可以通过相机插件的当前功能以某种方
  • 如何控制画布对象的 z-index?

    当我在画布上绘制一些对象时 有时新对象会放在旧对象下面 例如 我将一些图像添加到画布上 然后画一条线 当我运行代码时 图像位于最上面 我在网上搜索了解决方案 但没有一个直接的解决方案 在某些情况下 它被视为资源管理器中的一个错误 我如何控制
  • 如何在玩笑测试中模拟 json.parse()

    我的代码中有一个 try catch 当代码落入catch它的一部分命中了 JSON parse catch err JSON parse err message 代码可以工作 但测试失败 测试只是断言尝试中发生了一些事情 try popU
  • 如何展开到导航堆栈上的第一个视图控制器

    我在将视图展开到登录屏幕时遇到问题 故事板结构如下 故事板结构 https i stack imgur com Ea1t8 png 该应用程序的用户流程如下 用户在 LoginVC 上登录 gt 通过模态 Segue 进入主选项卡栏屏幕 g
  • 环境变量不会从 .htaccess 传递到 PHP

    我正在尝试将环境变量从 htaccess 传递到 PHP 这在我的本地 WAMP 服务器上工作得很好 但在托管我的网站的服务器上 它无缘无故地失败了 这是我的测试配置 htaccess SetEnv TEST VARIABLE test v
  • 具有大状态的 erlang gen_server

    我有一个包含数千个条目的特里树 用元组和列表实现 我想支持并发读取 数据的内存占用量在 10 20 MB 范围内 特里树被构建一次 之后只读 维护状态并为客户端提供并发访问的推荐方法是什么 这是我尝试过的 1 创建一个gen server
  • 如何在 Xamarin Forms 中从 ViewModel 设置焦点

    我想要设定焦点 in a SearchBox进行一些异步操作后进行控制 我想这样做from my 视图模型 我怎样才能做到这一点 EDIT 视图模型代码 private bool searchBarFocused public bool S