mvvm 패턴을 사용하여 사용자 정의 클래스의 ObservableCollection 속성에 TwoWay 바인딩을 만드는 방법은 무엇입니까?
public class UserGroup
{
public string GroupName { get; set; }
public bool IsIntheGroup{ get; set; }
}
UserGroup 항목의 ObservableCollection을 컬렉션의 각 항목에 대한 확인란이 들어있는 목록 상자에 바인딩하고 확인란을 UserGroup의 IsIntheGroup 속성을 기반으로 확인합니다. 내 ViewModel에서 ObservableCollection을 UserGroup 클래스로 만들었습니다.
public ObservableCollection<UserGroup> Groups { get; set; }
내 데이터베이스 모델에서 해당 내용 (UserGroup 인스턴스)을로드했습니다.
내 코드에서 다음 코드를 사용했습니다.
<ListBox ItemsSource="{Binding Groups, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding IsIntheGroup, Mode=TwoWay}"/>
<TextBlock Text="{Binding GroupName}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
사용자가 목록의 확인란을 선택/선택 취소하여 양방향 바인딩에 실패 할 때 알림을받지 못하는 문제가 있습니다 ...
이 경우 양방향 바인딩을 어떻게 수행합니까?
내 컬렉션에 ViewModel을 반영하는 방법에 대한 아이디어가 있습니까? 내 데이터베이스를 업데이트하는 데 사용할 수 있도록 ObservableCollection을 modificatins로 새로 고치는 방법을 의미합니다. – mill
INPC를 구현하면 바인딩이 두 가지 방식으로 작동합니다. 즉, 컬렉션의 항목에 대한 프로그램적인 변경 사항이 모두 업데이트됩니다. UI 및 사용자가 호출 한 UI 변경 사항은 컬렉션 인스턴스를 업데이트합니다. 그런 다음 변경 사항을 유지하기 위해 뷰 모델의 모든 저장 또는 적용 동사에서 ObservableCollection을 탐색 할 수 있습니다. – devdigital