I have a ListView with an ObservableCollection. The class User has a List with Groups. I have another ListView which shows the Groups of the selected User. Now i try to add/delete groups, but they don't refresh in realtime. If i select another user and back to my user, i see the updated list.
XAML:
<ListView ItemsSource="{Binding ListUsers}" SelectedItem="{Binding SelectedUser}">
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}"/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
[...]
<ListView ItemsSource="{Binding SelectedUser.Groups}" SelectedItem="{Binding SelectedGroup}">
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}"/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
Class:
public class User : ObservableObject
{
private string name;
public string Name
{
get => name;
set => SetProperty(ref name, value);
}
private ObservableCollection<string> groups;
public ObservableCollection<string> Groups
{
get => groups;
set => SetProperty(ref groups, value);
}
}
ViewModel:
private ObservableCollection<User> listusers;
public ObservableCollection<User> ListUsers
{
get => listusers;
private set => SetProperty(ref listusers, value);
}
private User _selectedUser;
public User SelectedUser
{
get => _selectedUser;
set => SetProperty(ref _selectedUser, value);
}
private string _selectedGroup;
public string SelectedGroup
{
get => _selectedGroup;
set => SetProperty(ref _selectedGroup, value);
}
public async Task DelGroup()
{
await Task.Run(() =>
{
//SelectedUser.Groups.Remove(SelectedGroup);
for (int i = 0; i < ListUsers.Count; i++)
{
if (SelectedUser.SAMAccountName == ListUsers[i].SAMAccountName)
{
ListUsers[i].Groups.Remove(SelectedGroup);
}
}
});
}