데이터 바인딩 된 양식이있는 경우 사용자가 텍스트 상자에 텍스트를 입력하거나 콤보 상자에서 항목을 선택하여 수정했는지 어떻게 알 수 있습니까? 내 TextBox의 "TextChanged"이벤트에 연결하려고했지만 문제점은 내 양식이 데이터 바인딩에 참여할 때 "TextChanged"이벤트가 발생하여 내 양식을 "더티 (dirty)"라고 표시하는 것입니다.양식/필드가 데이터 바인딩 된 경우 어떻게 "더티"로 표시 할 수 있습니까?
5
A
답변
3
시도
public partial class Window1 : INotifyPropertyChanged
다음
public event PropertyChangedEventHandler PropertyChanged;
public string UserName
{
get { return _UserName; }
set { if (value != _UserName)
{
_UserName = value;
OnNotifyPropertyChanged("UserName");
}}
}
private void OnNotifyPropertyChanged(string property)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(property));
}
와 데이터 바인딩과 같은
<TextBox Text="{Binding UserName}"/>
0
페이지를 처음 표시 할 때 TextChanged 이벤트가 발생하면 배열에 양식 값을 저장하고 다른 양식이 더러운 경우 기존 값과 비교하십시오.
1
모델 클래스가 INotifyPropertyChanged
을 구현합니까? 그렇다면 클래스의 PropertyChanged
이벤트에 대한 처리기를 추가하고 문제의 속성이 변경되는지 관찰 할 수 있습니다.
INotifyPropertyChanged
을 구현하지 않은 경우 UI 레이어에 업데이트를 알리는 데 사용하는 메커니즘을 여기에서 사용할 수도 있습니다.
0
구현 ->http://www.mishainthecloud.com/2009/07/simple-dirty-tracking-for-winforms-in-c.html합니다.
나는 이것이 조금 늦다는 것을 알고 있지만 나는이 접근법을 좋아한다. 캡슐화 된 선량.
컨트롤을 바인딩 한 후 SetAsClean()을 호출하십시오. 이 메소드 호출은 BindingSources의 이벤트 중 일부를 처리하여 동일한 더티 추적 클래스에 캡슐화 될 수 있습니다.
+0
이것이 WPF에 적용되지 않는다고 생각하십시오. –
관련 문제
- 1. 데이터 바인딩 된 컨트롤을 언제 데이터 바인딩 할 수 있습니까?
- 2. 데이터 바인딩 된 필드에 어떻게 텍스트를 추가 할 수 있습니까?
- 3. 어떻게 _Layout.cshtml에서 데이터 바인딩 할 수 있습니까?
- 4. 데이터 바인딩 된 객체의 문자를 어떻게 대체 할 수 있습니까?
- 5. 어떻게 동적으로로드 된 DataGridViews를 데이터 바인딩 할 수 있습니까?
- 6. 데이터 소스에 바인딩 된 DataGridView에서 형식을 조작 할 수 있습니까?
- 7. 데이터 바인딩 된 항목에서 속성 이름을 검색 할 수 있습니까?
- 8. PDO 명세서에 바인딩 된 항목을 표시 할 수 있습니까?
- 9. WPF 내에서 "math"할 수 있습니까? 데이터 바인딩 된 스타일
- 10. 동적으로 생성 된 RadioButtonLists를 데이터 바인딩 (양방향) 할 수 있습니까?
- 11. DataTemplate 내에 데이터 바인딩 된 StackPanel 표시
- 12. 데이터 바인딩 된 서버 컨트롤에서 PadLeft를 호출 할 수 있습니까?
- 13. 다른 바인딩에 바인딩 된 바인딩 경로를 어떻게 얻을 수 있습니까?
- 14. .NET에서 arraylist에 대한 gridview를 어떻게 데이터 바인딩 할 수 있습니까?
- 15. VB.Net에서 데이터 바인딩 된 ComboBox를 다시 바인딩 할 수 없다
- 16. 어떻게 문자열을 textView에 표시 할 수 있습니까?
- 17. JSON으로 생성 된 HashMap을 어떻게 표시 할 수 있습니까?
- 18. 어떻게 URL에서 이미지를 표시 할 수 있습니까?
- 19. Silverlight에서 HTML을 어떻게 표시 할 수 있습니까?
- 20. 어떻게 파일을 sdcard에 표시 할 수 있습니까?
- 21. UITableViewCell에서 UIPopoverController를 어떻게 표시 할 수 있습니까?
- 22. 전류 등급을 어떻게 표시 할 수 있습니까?
- 23. 여러 모델에서 Bing 압핀을 어떻게 바인딩 할 수 있습니까?
- 24. 페이지가로드 된 후 어떻게 데이터 테이블을로드 할 수 있습니까?
- 25. DataTrigger를 첨부 된 속성에 바인딩 할 수 있습니까?
- 26. 특정 수준의 WPF TreeView에 어떻게 바인딩 할 수 있습니까?
- 27. 데이터 바인딩 된 TextBox : 종료 할 수 없습니다.
- 28. Ag UserControl은 XAML에 노출 된 속성을 바인딩 할 수 있습니까?
- 29. .NET 데이터 공급자 - 어떻게 할 수 있습니까?
- 30. 어떻게 데이터 집합을 TreeView (계층 구조 포함)에 직접 바인딩 할 수 있습니까?
매우 작은 개선 : 대신 중첩을 줄일 수 있습니다. if (value == _UserName) return; 시각적 인 혼란을 조금 줄입니다. –