PropertyChangedCallback не обновляет графический интерфейс - PullRequest
0 голосов
/ 03 сентября 2018

Привет, у меня есть одно главное окно, которое передает данные датчика в реальном времени на диаграмму управления пользователя через тот же интерфейс GUI, и PropertyChangedCallback, кажется, не обновляет содержимое GUI (диаграмма не получает никаких данных), найдите мой код ниже:

  1. MainWindow.xaml

    <local:ConstantChangeChart1 x:Name="cscs"></local:ConstantChangeChart1>
    
  2. MainWindow.xaml.cs

    cscs.SetValue(ConstantChangeChart1.MyCustomProperty, main_liveValue_lbl.Content);
    
  3. Контроль пользователя - ConstantChangeChart1

    public static readonly DependencyProperty MyCustomProperty = DependencyProperty.Register("MyCustom", typeof(string), typeof(ConstantChangeChart1),
        new PropertyMetadata(
        new PropertyChangedCallback(OnMyCustomChanged)));
    
    public string MyCustom
    {
        get
        {
            return this.GetValue(MyCustomProperty) as string;
        }
        set
        {
            this.SetValue(MyCustomProperty, value);
            OnPropertyChanged("MyCustom");
        }
    }
    public static void OnMyCustomChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        ConstantChangeChart1 originator = d as ConstantChangeChart1;
        if (originator != null)
        {
            originator.OnMyPropertyChanged(d,e);
        }
    }
    
    private void OnMyPropertyChanged(DependencyObject d ,DependencyPropertyChangedEventArgs e)
    {
        ConstantChangeChart1 control = (ConstantChangeChart1)d;
        if(control !=null)
        {
            //Thread.Sleep(150);
            var now = DateTime.Now;
            //_trend += r.Next(-8, 10);
    
            this.Dispatcher.Invoke(() =>
            {
                ChartValues.Add(new Model.MeasureModel
                {
                    DateTime = now,
                    Value = Convert.ToDouble(MyCustom)
                });
            });
    
            SetAxisLimits(now);
    
            //lets only use the last 150 values
            if (ChartValues.Count > 150) ChartValues.RemoveAt(0);
        }
    }
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...