Пользовательский вид с ViewModel не является обязательнымC#

Место общения программистов C#
Ответить
Anonymous
 Пользовательский вид с ViewModel не является обязательным

Сообщение Anonymous »

Я хочу передать аргументы (От, Кому) в свое пользовательское представление. Внутри этого представления я хотел бы связать свою модель представления. Когда я привязываю модель представления к своему представлению в коде, все это перестает связываться вместе. Что я делаю не так?
Просмотр: Код:

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

using LazyFit.ViewModels.MoodViewModels;
using Microcharts;

namespace LazyFit.Views.Mood;

public partial class MoodChartView : ContentView
{
public static readonly BindableProperty FromProperty = BindableProperty.Create(nameof(From), typeof(DateTime), typeof(MoodChartView), propertyChanged: OnFromToPropertyChanged);
public static readonly BindableProperty ToProperty = BindableProperty.Create(nameof(To), typeof(DateTime), typeof(MoodChartView), propertyChanged: OnFromToPropertyChanged);

public DateTime From
{
get => (DateTime)GetValue(FromProperty);
set => SetValue(FromProperty, value);
}

public DateTime To
{
get => (DateTime)GetValue(ToProperty);
set => SetValue(ToProperty, value);
}

private static void OnFromToPropertyChanged(BindableObject bindable, object oldValue, object newValue)
{
var view = (MoodChartView)bindable;
var viewModel = view.BindingContext as MoodChartViewModel;

if (viewModel != null)
{
viewModel.FromDate = view.From;
viewModel.ToDate = view.To;
view.Chart = viewModel.ChartObject;
}
}

public MoodChartView()
{
InitializeComponent();
BindingContext = new MoodChartViewModel();
}
}
ViewModel:

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

using CommunityToolkit.Mvvm.ComponentModel;
using LazyFit.Classes;
using LazyFit.Services;
using Microcharts;
using SkiaSharp;

namespace LazyFit.ViewModels.MoodViewModels
{
internal partial class MoodChartViewModel : ObservableObject
{
[ObservableProperty]
private DateTime _FromDate;
partial void OnFromDateChanged(DateTime value)
{
LoadChart();
}

[ObservableProperty]
private DateTime _ToDate;
partial void OnToDateChanged(DateTime value)
{
LoadChart();
}

[ObservableProperty]
private Chart _ChartObject;

public MoodChartViewModel()
{
LoadChart();
}

private async void LoadChart()
{
//...some verified code
}
}
}
Если я применю это таким образом, в представлении не появятся значения привязки.

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

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

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

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

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

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