2010-06-22 6 views
2

사용자가 값을 입력 할 수있는 사용자 인터페이스가 있으며이 값은 ViewModel에서 업데이트되고 결국 데이터베이스에 다시 기록됩니다.WPF에서 텍스트 상자를 "nothing"으로 설정했지만 MV 값이 업데이트되지 않았습니다.

값이 실제로 입력되면 제대로 작동합니다. 그러나 그 가치를 지우고 싶다면 (즉, 아무것도 설정하지 않으면) 효과가없는 것 같습니다.

예를 들어 '개'이지만 그 텍스트를 지우고 '저장'하면 변경 사항이 인식되지 않습니다.

값을 입력하면 발생하는 "PropertyChanged"를 호출합니다. 그러나 텍스트가 지워지고 텍스트 상자에서 입력 또는 탭을 누르면 속성이 업데이트되지 않습니다.

이 문제를 해결할 수있는 특별한 방법이 있습니까?

감사

+0

숫자, 문자열, datetime? –

+1

텍스트를 삭제하고 초점을 잃어버린 후에 데이터베이스를 확인 했습니까? UpdateSourceTrigger를 텍스트 상자로 설정 했습니까? 아니면 기본값입니까? PropertyChanged로 설정하면 텍스트가 변경 될 때마다 실행됩니다. 텍스트 상자를 지우면 PropertyChanged가 실행되고 포커스를 잃으면 속성이 같아서 그렇지 않습니다. 그러나 DB 자체가 업데이 트되지 않은 경우 다음 몇 가지 다른 문제가 있어야합니다. – Amsakanna

+0

기본 문자열을 사용하면 viewmodel을 평가하는 것과 같은 어려움이 있습니다. 버튼 명령을 통해 viewmodel 속성을 비워두면 유효성 검사가 더 이상 적용되지 않습니다. – barrypicker

답변

1

그것은 작동한다고 ....

가 확실 다른 층 (특히 DB)가 '빈'값을 허용 있습니까? 조용히 먹는 변환 예외 또는 오류 일 수 있습니다.

진단하려면 다른 유형의 여러 속성을 사용하여 실험하십시오.

0

위의 설명에서 Veer에 표시된대로 다음과 같이 UpdateSourceTrigger를 사용하여 텍스트를 변경할 때 감지하십시오. 뷰 모델에 중단 점을 설정하고 텍스트 상자에 입력 할 때 변경 이벤트를 캡처하는지 확인하십시오.

<TextBox Text="{Binding Path=Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/> 
0

데이터 형식이 int 인 경우 속성이 업데이트되지 않습니다. 속성을 문자열로 설정하면이 속성을 지울 때 속성이 업데이트됩니다.

관련 문제