나는 다음과 같은 기관이 있습니다WPF 아이 컬렉션에 바인딩
public class UserManagerViewModel : ObservableObject
{
public ObservableCollection<Role> AllRoles { get; set; }
public UserViewModel()
{
AllRoles = new ObservableCollection<Role>(RoleRepository.GetAll());
}
private User _selectedUser;
public User SelectedUser
{
get { return _selectedUser; }
set
{
if (_selectedUser != value)
{
_selectedUser = value;
RaisePropertyChanged();
}
}
}
...
}
나는 다음과 같은 방법으로 (또는 아무것도 유사한)에서 SelectedUser
역할을 표시하려면이 뷰 모델로
public class User
{
public User()
{
Roles = new ObservableCollection<Role>();
}
public int UserId { get; set; }
public string Name { get; set; }
public DateTime DateOfBirth { get; set; }
public virtual ICollection<Role> Roles { get; set; }
}
public class Role
{
public int RoleId { get; set; }
public string Name { get; set; }
public virtual User User { get; set; }
}
를 : 나는의 IsChecked
속성을 설정해야 할 것과
<Window.DataContext>
<vm:UserManagerViewModel/>
</Window.DataContext>
<ListBox ItemsSource="{Binding AllRoles}">
<ListBox.ItemTemplate>
<DataTemplate>
<CheckBox Content="{Binding Name}" IsChecked="{Binding ???}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
그러면 역할은 SelectedUser
이됩니까?
UserManagerViewModel이 샘플에 없습니다. – Maximus
@ Maximus My bad, UserViewModel == UserManagerViewModel – Yoav
WPF를 사용하면 데이터가 UI가 아니라 응용 프로그램이됩니다. UI는 사용자 친화적 인 데이터 반영입니다. 무언가가 선택되었는지 여부를 알아야 할 경우 데이터 모델에 해당 속성이 있어야합니다. 귀하의 경우 Role 개체에 IsSelected 속성을 추가하고 SelectedUser가 변경되면 AllRolles를 통해 선택한 사용자와 일치하도록 IsSelected 속성을 업데이트합니다. 물론 사용자가 역할을 수정하고 저장할 수 있다고 가정하면 변경 사항을 다시 'SelectedUser'에 전파 할 방법이 필요합니다. – Rachel