Я хотел бы создать свойства viewmodel во время выполнения.
Я не очень знаком с MVVM в UWP. Скорее окна формы. В прошлом я создавал пользовательский объект класса с отражением, и у меня была возможность добавлять свойства во время выполнения.
В текущем проекте я подготовил решение с помощью mvvm ligt и приложения UWP. Прекрасно работает с обменом данными на уровне viewmodel. Теперь я пытаюсь найти, как создать свойства viewmodel во время выполнения, т.е. из описаний в xml файле.
namespace hmi_panel.ViewModels
{
public class HomeViewModel : ViewModelBase
{
#region Fields
readonly IPlcService _plcService;
#endregion
#region Constructors
public HomeViewModel(IPlcService dummyPlcService)
{
_plcService = dummyPlcService;
_plcService.Connect("127.0.0.1", 0, 1);
//zdarzenie cyklicznego odswiezania zeminnych
OnPlcServiceValuesRefreshed(null, null);
_plcService.ValuesRefreshed += OnPlcServiceValuesRefreshed;
}
#endregion
#region Properties
public string AppVersion
{
get { return $"{Package.Current.Id.Version.Major}.
{Package.Current.Id.Version.Minor}.{Package.Current.Id.Version.Build}.
{Package.Current.Id.Version.Revision}"; }
}
public string AppCopyright
{
get { return "plc service: " + _plcService.ConnectionState.ToString(); }
}
private bool _pumpState;
public bool pumpState
{
get { return _pumpState; }
set {
_pumpState=value;
RaisePropertyChanged(() => pumpState);
}
}
#endregion
#region Methods
private RelayCommand _ConnectCommand;
public RelayCommand ConnectCommand
{
get
{
return _ConnectCommand ?? (_ConnectCommand = new RelayCommand(() =>
{
pumpState = true;
}, () => true));
}
}
private void OnPlcServiceValuesRefreshed(object sender, EventArgs e)
{
pumpState = _plcService.PumpState;
}
#endregion
}
}
Значение свойства pumpState передается и записывается с помощью _plService. Я могу изменить значение, и я могу читать после внешнего изменения.
Я хотел бы начать только с двунаправленной привязки в xaml и создать необходимое свойство т.е. pumpState, когда создается экземпляр viewmodel, т.е. в застройщике.