Невозможно получить доступ к наблюдаемому свойству в модели представления из соответствующего файла .xaml представления C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Невозможно получить доступ к наблюдаемому свойству в модели представления из соответствующего файла .xaml представления

Сообщение Anonymous »

Я разрабатываю приложение .NET MAUI, в котором использую шаблон MVVM через пакет nuget Community.Toolkit.MVVM. В приведенном ниже коде на MorePage я пытаюсь связать заголовок с Forecast.Name, который является наблюдаемым свойством MorePageViewModel, которое установлено в качестве контекста привязки для самого MorePage. Я проверил, что функция навигации выполняется с передачей правильного объекта, поэтому проблема, похоже, либо в MorePageViewModel, либо в MorePage.xaml(.cs), но я не уверен, где именно.

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

namespace forecAstIng.Model
{
public abstract class TimeSeriesData
{
public string Name { get; set; }
public char MeasurementUnit { get; set; }

public double HourTimeInterval { get; set; } = 24;
public double DayTimeInterval => HourTimeInterval / 24;
public double MinuteTimeInterval => HourTimeInterval * 60;

public List ValueHistory { get; set; }
public List ValuePredictions { get; set; }

public double HistoryHigh { get; set; }
public double HistoryLow { get; set; }

public string CurrentBehaviour { get; set; }
public double CurrentValue { get; set; }
}

class WeatherData : TimeSeriesData
{
}

class StockData : TimeSeriesData
{
}
}

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

using forecAstIng.View;

namespace forecAstIng.ViewModel
{
public partial class ForecastsViewModel : BaseViewModel
{
public ObservableCollection Forecasts { get; } = new();

public ForecastsViewModel()
{
Title = "forecAstIng";
Forecasts.Add(new WeatherData { Name = "Prague, CZ", CurrentBehaviour = "sunny", CurrentValue = 23.8776575, HistoryHigh = 27.389, HistoryLow = 20, MeasurementUnit = 'C' });
}

[RelayCommand]
async Task GoToMorePage(TimeSeriesData forecast)
{
if (forecast is null)
return;

await Shell.Current.GoToAsync(nameof(MorePage), true, new Dictionary
{
{"Forecast", forecast}
});
}
}
}

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

namespace forecAstIng.ViewModel
{
[QueryProperty(nameof(TimeSeriesData), "Forecast")]
public partial class MorePageViewModel : BaseViewModel
{
public MorePageViewModel()
{
}

[ObservableProperty]
TimeSeriesData forecast;
}
}

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

namespace forecAstIng.View
{
public partial class MorePage : ContentPage
{
public MorePage(MorePageViewModel vm)
{
InitializeComponent();
BindingContext = vm;
}
}
}
Маршрут зарегистрирован в AppShell, а временные службы добавлены в MauiProgram.cs.
Заголовок на странице MorePage просто пуст.Я безуспешно пытался изменить имя свойства, доступность, имя «Прогноз», которое используется повсюду в качестве имени свойства в файле MorePage.xaml и функции навигации, а также имя Поле поддержки, автоматически создаваемое пакетом nuget. Однажды у меня сработало запланированное поведение, но потом я что-то изменил и не уверен, что я сделал по-другому.

Подробнее здесь: https://stackoverflow.com/questions/788 ... -view-xaml
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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