MVVM을 릴레이 명령 및 데이터 바인딩으로 사용하는 C# WPF에서 간단한 데이터베이스 응용 프로그램을 만듭니다. 데이터베이스 내용의 메모리 저장을 위해 나는 다음과 같이에서 Datagrid에 바인더 제본되는, ObservableCollection
를 사용 항목을 사용자가 선택 유효성 검사 오류시 자동 데이터 바인딩을 금지하는 방법
<DataGrid ItemsSource="{Binding Path=Softwares, Mode=OneWay}" SelectedItem="{Binding Path=SoftwareSelection, Mode=TwoWay}">
IDataErrorInfo
을 사용하여 유효성이 검사되므로 변경 사항을 컬렉션과 데이터베이스에 저장할 수 없습니다.
<TextBox Text="{Binding Name, Mode=TwoWay, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged, ValidatesOnExceptions=True}"/>
하지만 텍스트 상자에서 일부 값을 변경 한 다음 새 값이 ObservableCollection
에 전파되어, 창을 닫으 경우 까다로운 부분이있다 : 예제 텍스트 상자의 모양 방법은 다음과
입니다 , 나는 그것을 원하지 않는다. 그런 행동을 피하는 방법을 알고 있습니까? 단추를 클릭 한 후에 만 데이터 바인딩 작업을 싶습니다. 그렇지 않으면 databindng가 잘 작동하므로 버튼을 클릭하고 데이터베이스 및 클릭 후 컬렉션에 변경 사항이 반영됩니다. 양쪽 모두의 뷰는 다른 ViewModel에 의해 처리되고, 뷰 간의 데이터는 이벤트의 방아쇠에 의해 건네받습니다.
ItemsSource 바인딩에 DataGrid
UpdateSourceTrigger=Explicit
에 추가하려했지만 도움이되지 않았습니다. 아마도 일부 응용 프로그램 논리가 누락 되었습니까?
도움 주셔서 감사합니다.
이것은 정확히 내가 찾고 있던 것입니다. – lukas