У меня есть настраиваемый элемент управления,
Код: Выделить всё
ThingDisplay, with x:Name="thingDisplay" and x:DataType="Thing". Он просто отображает данные из модели Thing.
Model Thing.cs
Код: Выделить всё
public class Thing
{
public string Name { get; init; }
public string Description { get; init; }
}
Код: Выделить всё
.
.
.
Код: Выделить всё
public partial class MainViewModel : ObservableObject
{
public MainViewModel()
{
CollectionItems = [.....];
}
public ObservableCollection CollectionItems{ get; private set; }
[RelayCommand]
async void ShowPopup(Thing th)
{
var popup = new Popup(th);
var res = await Application.Current.MainPage.ShowPopupAsync(popup);
if (res == 1)
CollectionItems.Remove(th);
}
Код: Выделить всё
public Thing TODO=> //BindingContext conversion back to Thing
public ThingDisplay()
{
InitializeComponent();
}
Когда я попробовал очевидный маршрут преобразования (Thing)BindingContext , он выдал ошибку нулевой ссылки.
Я знаю, что BindingContext каким-то образом хранит исходные данные, поскольку проверка его во время предварительного просмотра XAML даже показывает, что он знает тип Thing .
Я что-то упускаю или есть какой-то альтернативный путь?
PS: Я знаю, что это чрезвычайно странный и запутанный способ. возврата данных, но у меня возникли странные проблемы с кэшированием привязки с сенсорным поведением набора инструментов при привязке к внешнему элементу управления (подробнее
https://stackoverflow.com/questions/785 ... late-from- переработка-привязок-в-нет-Мауи)
Подробнее здесь: https://stackoverflow.com/questions/785 ... ing-object