7

VS2010, WPF ve EF ile çalışıyorum. Bir pencereyi Veri Kaynakları araç penceresinden sürükleyerek pencereme denetimler yerleştirdim. "Ayrıntılar" ayarını kullandım, böylece varlığım birkaç etiket ve metin kutusuyla temsil ediliyor.Odaklanan Öğede Değişiklikleri Takibe WPF'yi Zorla

_context.SaveChanges(); 

Verileri düzenleme ediyorum, metin kutusu odağa sahip hangisi değişiklikler geri DB taahhüt değildir: Ben de aşağıdaki kodla bir düğme ekledik. Diğer her şey gayet iyi. Kaydet düğmesine basmadan önce odağı başka bir öğeye kaydırırsam, o da taahhüt eder. DataGrid ile aynı şeyi yaşadım.

Basit bir şeyi kaçırdığımı biliyorum, ama anlayabiliyorum. Ne eksik olduğum hakkında bir fikrin var mı?

Teşekkürler!

cevap

12

Bunun nedeni, TextBox'un varsayılan Bağlama UpdateSourceTrigger öğesi LostFocus'dur. 'Programlı bir veri sınırlama TextBox değerini ayarlamak çalışırken

<TextBox Text="{Binding SomeProperty, UpdateSourceTrigger=PropertyChanged}" /> 
+2

Neden TextBox "odak kaybetmek" değildir: Devam etsin diye nasıl aldığını İşte

var? Bunu programlı olarak zorlayabilir misiniz? –

+0

+1 Tam olarak aradığım şey bu. Teşekkürler! –

+1

Rob Fonseca-Ensor'un sorusuna cevap veren var mı? – newman

3

Sadece bu aynı konu koştum ama Abe önerisi değil mi: Eğer PropertyChanged bu set için tüm binding'lerini değiştirirseniz, bu beklenenden gibi çalışacak Kurulumumuz için çalışın (bazı kararsız davranışlara neden oluyordu). düğme tıklandığında

TextBox tb = (TextBox)this.FindName("TargetTextBox"); 
tb.Text = "1234"; 
tb.GetBindingExpression(TextBox.TextProperty).UpdateSource();