all. Ben sadece sayısal girişlere izin veren bir usercontrol "NumericTextBox" var. Bir başka özel davranış sergilemeliyim, yani bir VM değerine OneWayToSource bağlayabilmek için ihtiyacım var ve sadece metin kutusuna odaklanırken enter tuşuna bastığımda VM değeri güncellemesine sahip olmalıyım. Anahtarya bastığımda çıkan EnterPressed olayına zaten sahibim, sadece bu eylemi bağlamanın güncellenmesine neden olacak bir yol bulmaktan çok zorlanıyorum ...Yalnızca girerken bağlanmayı güncelleyen WPF metin kutusu
9
A
cevap
11
Ciltleme ifadenizde, UpdateSourceTrigger öğesini ayarlayın. Açıkça EnterPressed olayını işlerken
Text="{Binding ..., UpdateSourceTrigger=Explicit}"
Daha sonra, bu, gerçek bağlı özelliğine metin değeri itecek, bağlama ifadesi üzerindeki UpdateSource arayın. Eğer MVVM kullanıyorsanız
BindingExpression exp = textBox.GetBindingExpression(TextBox.TextProperty);
exp.UpdateSource();
3
ne zaman metin PreviewKeyUp üzerinde UpdateSource çağıran özel ekli özelliği ile birlikte decastelijau yaklaşımının bir arada kullanabilirsiniz.
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);
}
Sonra yapabilirsiniz:
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);
}
: Burada
<TextBox myprops:UpdaterProps.UpdateSourceOnKey="Enter" ... />
7
Anderson İmes tarafından sağlanan fikrinin tam sürümüdür
İlgili konular
- 1. WPF Doğrulama bağlanmamış metin kutusu
- 2. WPF Metin kutusu ciltleme ve satır sonları
- 3. metin kutusu düz sınır tarzı wpf
- 4. WPF ciltli metin kutusu sözlük girişine
- 5. WPF Zengin metin kutusu altı çizili
- 6. SmartGWT'de yalnızca sayı metin kutusu nasıl onaylanır?
- 7. WPF onay kutusu
- 8. WPF Sohbet kutusu kontrolü
- 9. GUI Metin Temizle WPF
- 10. WPF değişiklik metin
- 11. Metin Kutusu
- 12. WPF: Liste kutusu, değer dönüştürücü
- 13. WPF metin kutusu ciltlemesi ileri ve geri gidildikten sonra kayboluyor
- 14. WPF Hesap makinesi ile sayısal metin kutusu kontrolü?
- 15. WPF Zengin Metin Kutusu. Net 4.5 içinde binleştirilebilir.
- 16. WPF: Yazılamadı çift Metin Kutusu ve Bağlama. o
- 17. Anahtarlama parametresi olarak geçiş WPF Komutu Bağlama Metin Kutusu
- 18. "Yeni satır" metin kutusu
- 19. Metin Kutusu, yalnızca tarihin tarihini Excel'de değil, tarihte verir
- 20. Odağı WPF metin kutusuna ayarla
- 21. DialogResult ayarını yalnızca WPF
- 22. Metin kutusu boyutu Flash'ta
- 23. metin kutusu giriş yüksekliği
- 24. kaldır metin kutusu önerileri
- 25. Yazarken güncelleme metin kutusu
- 26. wxPython'da düzenlenemeyen metin kutusu
- 27. Zengin Metin Kutusu - Kalın
- 28. bir metin kutusu (programlı)
- 29. satırlı metin kutusu dataGridView
- 30. vba metin kutusu değerini