Как я могу получить CollectionView.SelectedItems из ViewModelC#

Место общения программистов C#
Ответить
Anonymous
 Как я могу получить CollectionView.SelectedItems из ViewModel

Сообщение Anonymous »

Я хочу получить выбранные элементы из CollectionView в модели представления.
Я попытался привязать 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;
}
}
}
но когда я выбираю любой элемент, счетчик свойства в модели представления по-прежнему равен 0.
CollectionView выглядит следующим образом: Я установил BindingContext в конструкторе страницы кода программной части.
и модель представления выглядит следующим образом:

Код: Выделить всё

    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);
}
}

и GetUserFriendsCommand запускается в событии Loaded ContentPage с помощью EventToCommandBehavior.
есть ли какое-нибудь решение или обходной путь

Подробнее здесь: https://stackoverflow.com/questions/785 ... -viewmodel
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»