2010-02-03 3 views
1

여러 개의 TextBox가있는 WPF 창이 있습니다.TextBox에 바인딩 된 TableAdapter를 자동으로 업데이트하는 방법

는 내가 SQL 서버 데이터베이스에 첨부 된 XSD 데이터 집합을 가지고 있고, 창은 TableAdapter가의 행에 바인딩 :

public partial class PersonForm : Window 
    { 
    public PersonForm(int id) 
    { 
     InitializeComponent(); 

     MyDatasetTableAdapters.personTableAdapter tableAdapter = 
     new MyDatasetTableAdapters.personTableAdapter(); 

     personRow row = tableAdapter.GetPersonById(id); 

     this.DataContext = row; 
    } 

    ... 

    } 

글 상자는 다음과 같이 바인딩 :

<TextBox Name="lastName" Text="{Binding Path=lastname}" /> 

이를 바인딩 바인딩이 작동하고 텍스트 상자에 SQL 데이터베이스의 데이터가 제대로 채워지지만 텍스트 상자를 편집하면 변경 내용이 다시 데이터베이스로 전달되지 않습니다.

나는 전화

myTableAdapter.Update(myRow); 

을 클릭하면이 성공적으로 SQL 데이터베이스를 업데이트 않는 버튼이있다.

내 질문은 : 변화 내가 텍스트 상자가 자동으로 (명시 적으로 TableAdapter.Update를 호출하지 않고) 데이터베이스를 자동으로 업데이트합니다 있도록해야 할 무엇.

또한 WPF에서 양식을 데이터베이스에 바인딩하는 적절한 방법입니까?

답변

0

이 작업을 수행하는 한 가지 방법을 발견했습니다.

private void Window_SourceUpdated(object sender, DataTransferEventArgs e) 
{ 
    myTableAdapter.Update(myRow); 
} 
:

<TextBox Name="lastName" Text="{Binding Path=lastname, NotifyOnSourceUpdated=True}" /> 

나는 다음과 같이 윈도우의 SourceUpdated 이벤트 테이블 어댑터를 업데이트 할 수 있어요 다음 를 설정하여

는 다음과 같이 바인딩 텍스트 상자에 True로 속성을 NotifyOnSourceUpdated

이것은 잘 작동하는 것 같습니다. 이 작업을 수행하는 더 좋은 방법이 있습니까?

쉽게 모든 텍스트 상자에를 지정하지 않고도 모든 텍스트 상자에 NotifyOnSourceUpdated을 가능하게하는 방법이 있나요?

관련 문제