Я попытался привязать SelectedItems к свойству типа ObservableCollection в модели представления, и я установил Mode на TwoWay, но это дало мне ошибку привязки, и сообщение об ошибке было «невозможно неявно преобразовать тип ObservableCollection в IList», поэтому я изменил свойство на IList, все еще получая «невозможно неявно преобразовать тип IList в IList», поэтому я сделал конвертер:
Код: Выделить всё
using CommunityToolkit.Maui.Converters;
using System.Collections.ObjectModel;
using System.Globalization;
namespace Portal.ValueConverters
{
internal class UserObservableCollectionToIListOfObjects : BaseConverter
{
public override IList DefaultConvertReturnValue { get => []; set => throw new NotImplementedException(); }
public override ObservableCollection DefaultConvertBackReturnValue { get => []; set => throw new NotImplementedException(); }
public override ObservableCollection ConvertBackTo(IList value, CultureInfo culture)
{
ObservableCollection users = value as ObservableCollection;
return users;
}
public override IList ConvertFrom(ObservableCollection value, CultureInfo culture)
{
IList objects = value as IList;
return objects;
}
}
}
CollectionView выглядит следующим образом:
Код: Выделить всё
и модель представления выглядит следующим образом:
Код: Выделить всё
public partial class SelectGroupMembersViewModel:ObservableObject
{
private readonly IUserFriendshipService _userFriendshipService;
public Command GetUserFriendsCommand { get; }
public Command GetSelectedMembersCommand { get; }
public ObservableCollection SelectedMembers { get; set; }
public ObservableCollection Friends { get; }
public SelectGroupMembersViewModel(IUserFriendshipService userFriendshipService)
{
_userFriendshipService = userFriendshipService;
GetUserFriendsCommand = new(async () => await GetUserFriendsAsync());
GetSelectedMembersCommand = new(async () => await GetSelectedMembersAsync());
Friends = [];
SelectedMembers = [];
}
public async Task GetUserFriendsAsync()
{
IList userFriends = await _userFriendshipService.GetCurrentUserFriendsAsync();
Friends.Clear();
foreach (User friend in userFriends)
Friends.Add(friend);
}
}
есть ли какое-нибудь решение или обходной путь
Подробнее здесь: https://stackoverflow.com/questions/785 ... -viewmodel
Мобильная версия