全部。我有一個只允許數字輸入的用戶控件「NumericTextBox」。我需要展示另一種專門的行爲,也就是說,我需要它能夠將其綁定到VM值OneWayToSource,並且只有在按住Enter鍵的同時對焦文本框時纔會更新VM值。我已經有一個EnterPressed事件,當我按下按鍵時會觸發,我只是很難找出一種方法來引起該操作來更新綁定...WPF文本框僅在輸入時才更新綁定
9
A
回答
11
在綁定表達式中,將UpdateSourceTrigger明確。
Text="{Binding ..., UpdateSourceTrigger=Explicit}"
然後,處理EnterPressed事件時,調用UpdateSource上的結合表達,這將從文本框推值實際綁定屬性。
BindingExpression exp = textBox.GetBindingExpression(TextBox.TextProperty);
exp.UpdateSource();
3
如果您正在使用MVVM可以使用decastelijau的相結合的辦法與在文本框時PreviewKeyUp調用UpdateSource自定義附加屬性一起。
public static readonly DependencyProperty UpdateSourceOnKey = DependencyProperty.RegisterAttached(
"UpdateSourceOnKey",
typeof(Key),
typeof(TextBox),
new FrameworkPropertyMetadata(false)
);
public static void SetUpdateSourceOnKey(UIElement element, Key value)
{
//TODO: wire up specified key down event handler here
element.SetValue(UpdateSourceOnKey, value);
}
public static Boolean GetUpdateSourceOnKey(UIElement element)
{
return (Key)element.GetValue(UpdateSourceOnKey);
}
然後,你可以這樣做:
<TextBox myprops:UpdaterProps.UpdateSourceOnKey="Enter" ... />
7
這裏是由安德森艾姆斯提供的想法的完整版本:
public static readonly DependencyProperty UpdateSourceOnKeyProperty =
DependencyProperty.RegisterAttached("UpdateSourceOnKey",
typeof(Key), typeof(TextBox), new FrameworkPropertyMetadata(Key.None));
public static void SetUpdateSourceOnKey(UIElement element, Key value) {
element.PreviewKeyUp += TextBoxKeyUp;
element.SetValue(UpdateSourceOnKeyProperty, value);
}
static void TextBoxKeyUp(object sender, KeyEventArgs e) {
var textBox = sender as TextBox;
if (textBox == null) return;
var propertyValue = (Key)textBox.GetValue(UpdateSourceOnKeyProperty);
if (e.Key != propertyValue) return;
var bindingExpression = textBox.GetBindingExpression(TextBox.TextProperty);
if (bindingExpression != null) bindingExpression.UpdateSource();
}
public static Key GetUpdateSourceOnKey(UIElement element) {
return (Key)element.GetValue(UpdateSourceOnKeyProperty);
}
相關問題
- 1. WPF文本框綁定更新
- 2. 使數據綁定輸入文本框更新與AngularJS
- 3. 在文本框中輸入文本時綁定asp控件
- 4. WPF組合框綁定更新多個文本框
- 5. WPF文本框綁定
- 6. wpf文本框綁定日期時間
- 7. C#WPF - 如何綁定文本框輸入鍵按下方法?
- 8. WPF綁定更新不及時時,綁定對象被更新
- 9. Wpf DatePicker文本在綁定源更新後未更新
- 10. wpf文本框文本綁定
- 11. WPF MVVM文本框immidiate綁定屬性更新
- 12. WPF綁定文本框屬性的靜態類不更新
- 13. WPF文本框綁定不會更新與拖放
- 14. WPF綁定到不更新的文本框
- 15. 將文本框綁定到「輸入」鍵
- 16. 綁定Multibinding文本框在WPF MVVM
- 17. WPF綁定更新
- 18. 文本框綁定更新事件
- 19. 僅在文本框中輸入文本時顯示X按鈕
- 20. 如何在單擊文本框時更新文本框的綁定
- 21. WPF更新列表框數據綁定
- 22. 敲除綁定輸入文本框到另一個文本框
- 23. 更改綁定對象時不會更新文本框集中
- 24. 文本框驗證僅在文本更改後才起作用
- 25. 輸入綁定從文本框中竊取輸入
- 26. 敲除文本輸入綁定不更新值
- 27. 號僅文本框(WPF)
- 28. wpf綁定文本
- 29. WPF新手:更新文本框的值
- 30. C#WPF MVVM綁定更新不及時