none
允许用户向textbox输入字符串,但用户点击其他界面的其他区域时,textbox.text会恢复输入之前的字符串,但是当用户通过事件触动了某个方法,那么该textbox.text会改变本身存储的值,不会再恢复。这要如何做到 RRS feed

  • 问题

  • 想做一个类似windows xp系统中的目录系统中的目录地址信息文本框,类似下面的,虽然是win7的,但是xp系统的地址信息栏中没有类似截图 ">"的符号。而且wpf的textbox好像不能输入图片.所以仅考虑文字形式。

    向目录地址信息文本框中输入值,但是不按enter键,或者不点右边的跳转按钮。你用鼠标点击其他地方时,目录地址信息文本框会恢复输入之前的值。但是若你按下entry键或点击右边的跳转按钮,会改变这个目录地址信息文本框的值。

    我想实现的类似windows目录的地址跳转功能,但是,不知道怎么用textbox模拟出那种目录地址信息文本框的功能。或者说上面的粗体字所描述的功能形式。

    首先是"地址信息文本框会恢复复输入之前的值",不知道怎么弄。然后是触动事件改变textbox.text的值。

    设想了一下,如果以textbox.text绑定的字符串对象为绑定的数据源。以textbox.text为绑定目标,改变绑定目标,但不触动某个事件就不会改变绑定的数据源。但事件触动了。就将输入的textbox.text的值赋值给绑定的字符串对象,改变绑定数据源。绑定模式设置上是,改变绑定目标不会修改绑定的数据源。但改变绑定数据源时就会改变绑定目标。

    mvvm模式下。这个向textbox.text的输入的值该怎么传到textbox.text绑定的字符串对象?因为更改绑定目标不会更改绑定数据源。 

    想了一些,还是没有想到好思路,所以请求大神帮助




    2016年11月23日 13:44

答案

  • 自定义个TextBox的样式,分两层,一层用于显示编辑的文本,如TextBox本身的功能。另一层,只用于显示展现格式化好地址

    然后你设计一个属性,将其绑定到分别两层的显示隐藏 IsVisible 属性上,控制他们进行相反操作,一个True时候显示,一个True时候隐藏。

    然后,你只需要通过控件的GotFocus LostFocus事件来控制这个属性的值就可以了。

    因为是自定义的模板,所以模板里面不同层的元素可以分别同时邦定在TextBox.Text值上,这个你需要了解 TemplateBinding


    Bob Bao

    2016年11月24日 2:05
    版主