7

Tôi đang làm việc với VS2010, WPF và EF. Tôi đã đặt điều khiển trên cửa sổ của mình bằng cách kéo một thực thể ra khỏi cửa sổ công cụ Nguồn dữ liệu. Tôi đã sử dụng cài đặt "chi tiết" để thực thể của tôi được thể hiện bằng một số nhãn và hộp văn bản. Tôi cũng đã thêm một nút có mã sau:Buộc WPF cam kết các thay đổi đối với thành phần tập trung

_context.SaveChanges(); 

Khi tôi đang chỉnh sửa dữ liệu, các thay đổi trong hộp văn bản nào không tập trung lại vào DB. Mọi thứ khác đều tốt đẹp. Nếu tôi chuyển tiêu điểm sang phần tử khác trước khi nhấn nút lưu, nó cũng sẽ cam kết. Tôi đã trải nghiệm điều tương tự với DataGrid.

Tôi biết tôi đang thiếu thứ gì đó đơn giản, nhưng tôi có thể đoán ra. Bất kỳ ý tưởng về những gì tôi đang mất tích?

Cảm ơn!

Trả lời

12

Điều này là do Binding UpdateSourceTrigger mặc định của TextBox là LostFocus. Nếu bạn thay đổi tất cả các Bindings của bạn để thiết lập này để PropertyChanged, nó sẽ làm việc như bạn mong đợi:

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

Tại sao không phải là TextBox "mất tập trung" khi nút được nhấp? Bạn có thể lập trình buộc điều này không? –

+0

+1 Đó chính xác là những gì tôi đang tìm kiếm. Cảm ơn! –

+1

Ai có thể trả lời câu hỏi của Rob Fonseca-Ensor? – newman

3

Tôi chỉ chạy vào vấn đề này tương tự khi cố gắng để thiết lập giá trị của một TextBox databound lập trình, nhưng đề nghị của Abe didn' t làm việc cho thiết lập của chúng tôi (nó đã gây ra một số hành vi xác thực thất thường).

Đây là cách tôi đã nhận nó để làm việc:

TextBox tb = (TextBox)this.FindName("TargetTextBox"); 
tb.Text = "1234"; 
tb.GetBindingExpression(TextBox.TextProperty).UpdateSource(); 
Các vấn đề liên quan