2015-01-09 1 views
0

아마도 쉽지만 내 문제에 대한 해결책을 아직 찾지 못했습니다. 내가 바인딩을 사용하고, 예를 들어 사용자가 변경 텍스트 상자의 텍스트가 어떻게이 같은 일부 backround에 검사를 수행 할 때WPF에서 바인딩을 사용할 때 데이터를 확인하는 방법

:

  • 이 이름은 내 데이터베이스에 이미
  • 는에 이름이 적합합니까 허용 된 문자 집합

바인딩하지 않고 나는이 트릭을 수행하는 함수를 호출하기 만하면됩니다.

예 :

<TextBox x:Name="textbox_Name" Height="23" Margin="108,37,20,0" TextWrapping="Wrap" Text="{Binding Name,UpdateSourceTrigger=LostFocus}" VerticalAlignment="Top"/> 

  • DataContext를는 ObjectXYZ이다.
  • ObjectXYZ에는 이름 및 설명 속성이 있습니다. 두 방법은 바인딩 이름을 바인딩으로 if(!Database.isExistingObject(textbox_Name.Text) { ObjectXYZ.Name=textbox_Name.Text; }

    직접 변경됩니다 (:

  • 또한 "목록"나는 그런 짓을 woud Normaly

라는 유형 "ObjectXYZ"의 ObservableCollection에있는 데이터베이스를) ... 변경되기 전에 어떻게 확인할 수 있습니까?

+0

'바인딩을 사용하지 않으면 쉽게 트릭을 수행하는 함수를 호출합니다.'바인딩을 사용하면 여전히 동일한 함수를 호출 할 수 있습니다. – Bolu

+0

어떻게 이러한 함수를 호출 할 수 있습니까? 또는 더 나은 곳 어디에서 함수를 추가해야합니까? 그래서 텍스트 상자의 텍스트가 변경 될 때 호출됩니다. – Andreas

답변

1

사용자가 텍스트 상자 내용을 업데이트 한 직후에 전화를 걸면 배경 수표를 계속 호출 할 수 있습니다.

private string name; 

public string Name 
{ 
    get 
    { 
     return name; 
    } 

    set 
    {   
     CheckName(value); // Or whatever are you check functions 

     name = value; 

     PropertyChanged("Name"); 
    } 
} 

이 정보가 도움이되기를 바랍니다.

+0

나는 이것도 생각했다. 하지만 확인하려면이 코드 시점에서는 불가능한 데이터베이스에서 함수를 호출해야합니다. 일부 문자 세트를 확인하려면 올바른 해결책을 찾으십시오. – Andreas

+0

왜이 코드 포인트에서 데이터베이스 기능을 호출 할 수 없습니까? – Natan

+0

나는 어떤 것을 엉망으로 만들었다 고 생각합니다. 나는 새로운 창을 위해 이것을 필요로했고 나는 개인 회원이 필요 없다고 생각했다. 방금 공개 문자열 {get; set;}을 만들고 데이터베이스의 데이터를 전달했습니다. 나는 그 세트라고 생각했다. 데이터베이스 개체의 메서드가 호출됩니다. 그리고 거기서 나는 데이터베이스의 기능을 호출 할 수 없습니다. 어쩌면 조금 혼란 스러울 지 모르지만, 당신 덕분에 이제는 내 잘못이 있었기 때문에 알았습니다. – Andreas

관련 문제