Son*_*oul 26 .net c# data-binding wpf mvvm
我有一个文本框绑定到我的ViewModel上名为DatabaseFilter的属性
这是属性的实现
public string DatabaseFilter {
get { return _databaseFilter; }
set {
_databaseFilter = value;
FilterDatabases();
}
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我正在尝试根据文本框中键入的内容触发过滤.
问题是,当文本框失去焦点时会触发setter.因此,在用户按下TAB之前,键入文本框不会执行任何操作.
是否可以通过绑定每次按键进行视图模型下的绑定更新?我想避免添加键向下/向上事件,以保持UI /代码尽可能干净.
Mav*_*rik 43
UpdateSourceTrigger在TextBox上设置为PropertyChanged(默认为LostFocus)
Jar*_*rek 23
您需要UpdateSourceTrigger=PropertyChanged在绑定表达式上设置属性,例如
<TextBox Text="{Binding Path=DatabaseFilter, UpdateSourceTrigger=PropertyChanged}" />
Run Code Online (Sandbox Code Playgroud)
还有不同的值可用,例如:Explicit- 当您需要显式调用绑定更新时; LostFocus- 这是默认设置TextBox,在控件失去焦点后更新绑定.
您需要记住,如果您的过滤操作在UI线程上执行,则每次击键后进行过滤可能不是最明智的事情,因为此过滤产生的延迟可能会严重影响用户体验.如果你是肯定的,你需要在每次击键后进行过滤,请确保过滤很快(例如,只有很少的项可以过滤),或者你将在后台线程中过滤.
更改绑定以在属性更改时更新源:
<TextBox Text="{Binding DatabaseFilter, UpdateSourceTrigger=PropertyChanged}">
| 归档时间: |
|
| 查看次数: |
12980 次 |
| 最近记录: |