Создайте свойство динамически в viewmodel MVVM light и UWP - PullRequest
0 голосов
/ 02 января 2019

Я хотел бы создать свойства 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, т.е. в застройщике.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...