WPF Update UI из метода переопределения не работает - PullRequest
0 голосов
/ 09 мая 2020

Я пытаюсь обновить пользовательский интерфейс WPF из ViewModel.

The View:

    <UserControl.DataContext>
        <local:ConcreteObserver />
    </UserControl.DataContext>
    <Grid>
        <TextBlock
            HorizontalAlignment="Center"
            VerticalAlignment="Center"
            Text="{Binding Key, UpdateSourceTrigger=PropertyChanged}" />
        <Button
            VerticalAlignment="Top"
            HorizontalAlignment="Right"
            Content="Click"
            Command="{Binding TestDelegateCommand}" />
    </Grid>

ViewModel:

ConcreteObserver : Observer<Mouse>, INotifyPropertyChanged
    {

        private string _key;

        public DelegateCommand TestDelegateCommand { get; set; }

        public string Key
        {
            get { return _key; }
            set { _key = value;
                  OnPropertyChanged(nameof(Key)); 
                }
        }


        public ConcreteObserver ()
        {
            TestDelegateCommand = new DelegateCommand(UpdateGui);
        }

        private void UpdateGui()
        {
            Key = "Test refresh";
        }

        public override void Update(TestObject subject)
        {
            Key = "Test Update";

            if (subject is TestObject)
            {
                subject.MouseAction += OnMouse;
                subject.Start();

            }
        }

        private void OnMouse(object sender, RowMouseDataEventArgs e)
        {
            Key += "1";
        }

        public event PropertyChangedEventHandler PropertyChanged;

        [NotifyPropertyChangedInvocator]
        protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }
    }

У меня событие который запускается, когда я щелкаю мышью, и событие работает нормально.

Проблема в том, что пользовательский интерфейс не обновляется, если Key изменяется в методе обновления, и ничего не отображается на GUI, если Key свойство изменяется.

Я установил точку останова и наблюдал за изменением свойства Key, и все работает нормально, но GUI не распознает изменение.

Я тестировал это с помощью кнопки, изменения отображаются, когда я нажимаю на кнопку

Может мне кто-нибудь объяснить почему.

спасибо

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