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

在Enter键上绑定文本框

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

在Enter键上绑定文本框

通过创建附加行为,可以使自己成为纯XAML方法。

像这样:

public static class InputBindingsManager{    public static readonly DependencyProperty UpdatePropertySourceWhenEnterPressedProperty = DependencyProperty.RegisterAttached( "UpdatePropertySourceWhenEnterPressed", typeof(DependencyProperty), typeof(InputBindingsManager), new Propertymetadata(null, OnUpdatePropertySourceWhenEnterPressedPropertyChanged));    static InputBindingsManager()    {    }    public static void SetUpdatePropertySourceWhenEnterPressed(DependencyObject dp, DependencyProperty value)    {        dp.SetValue(UpdatePropertySourceWhenEnterPressedProperty, value);    }    public static DependencyProperty GetUpdatePropertySourceWhenEnterPressed(DependencyObject dp)    {        return (DependencyProperty)dp.GetValue(UpdatePropertySourceWhenEnterPressedProperty);    }    private static void onUpdatePropertySourceWhenEnterPressedPropertyChanged(DependencyObject dp, DependencyPropertyChangedEventArgs e)    {        UIElement element = dp as UIElement;        if (element == null)        { return;        }        if (e.OldValue != null)        { element.PreviewKeyDown -= HandlePreviewKeyDown;        }        if (e.NewValue != null)        { element.PreviewKeyDown += new KeyEventHandler(HandlePreviewKeyDown);        }    }    static void HandlePreviewKeyDown(object sender, KeyEventArgs e)    {        if (e.Key == Key.Enter)        { DoUpdateSource(e.Source);        }    }    static void DoUpdateSource(object source)    {        DependencyProperty property = GetUpdatePropertySourceWhenEnterPressed(source as DependencyObject);        if (property == null)        { return;        }        UIElement elt = source as UIElement;        if (elt == null)        { return;        }        Bindingexpression binding = BindingOperations.GetBindingexpression(elt, property);        if (binding != null)        { binding.UpdateSource();        }    }}

然后,在XAML中,将

InputBindingsManager.UpdatePropertySourceWhenEnterPressedProperty
属性设置为要在
Enter
按下键时更新的属性。像这样

<TextBox Name="itemNameTextBox"         Text="{Binding Path=ItemName, UpdateSourceTrigger=PropertyChanged}"         b:InputBindingsManager.UpdatePropertySourceWhenEnterPressed="TextBox.Text"/>

(您只需要确保在XAML文件的根元素中包括对“ b”的xmlns clr-
namespace引用,指向您将InputBindingsManager放入的任何名称空间)。



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

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

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