栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

从视图模型将焦点放在WPF中的TextBox上

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

从视图模型将焦点放在WPF中的TextBox上

让我分三个部分回答您的问题。

  1. 我想知道您的示例中的“ cs.txtCompanyID”是什么?它是TextBox控件吗?如果是,则说明您的方法错误。一般来说,在ViewModel中对UI进行任何引用不是一个好主意。您可以问“为什么?” 但这是在Stackoverflow上发布的另一个问题:)。

  2. 跟踪Focus问题的最佳方法是…调试.Net源代码。别开玩笑了 它节省了我很多时间。要启用.net源代码调试,请参阅Shawn Bruke的博客。

  3. 最后,我用来从ViewModel设置焦点的一般方法是附加属性。我写了非常简单的附加属性,可以在任何UIElement上进行设置。例如,它可以绑定到ViewModel的属性“ IsFocused”。这里是:

    public static class FocusExtension

    {
    public static bool GetIsFocused(DependencyObject obj)
    {
    return (bool) obj.GetValue(IsFocusedProperty);
    }


    public static void SetIsFocused(DependencyObject obj, bool value){    obj.SetValue(IsFocusedProperty, value);}public static readonly DependencyProperty IsFocusedProperty =    DependencyProperty.RegisterAttached(        "IsFocused", typeof (bool), typeof (FocusExtension),        new UIPropertymetadata(false, OnIsFocusedPropertyChanged));private static void onIsFocusedPropertyChanged(    DependencyObject d,     DependencyPropertyChangedEventArgs e){    var uie = (UIElement) d;    if ((bool) e.NewValue)    {        uie.Focus(); // Don't care about false values.    }}

    }

现在,在您的View(在XAML中)中,您可以将此属性绑定到您的ViewModel:

    <TextBox local:FocusExtension.IsFocused="{Binding IsUserNameFocused}" />

希望这可以帮助 :)。如果不是,请参考答案2。

干杯。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/506862.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号