Skip to main content
Stack Overflow на русском

Вернуться к вопросу

Отладка
Источник Ссылка

Внутри самого приложения данные по приёму обновляются нормально.
Если не работает обновление по методуКопал в отладке.

Копал в отладке.Получается что в данном случае OnPropertyChanged() не работает?

Получается OnPropertyChanged() работает неправильно? Просто дело в том, есть ли вероятность что сработает через интерфейс INotifyCollectionChangedон справлялся до этого и метод OnCollectionChanged()?всё обновлял правильно.Точнее даже обновляет всё,кроме графика.

Внутри самого приложения данные по приёму обновляются нормально.
Если не работает обновление по методу OnPropertyChanged(), есть ли вероятность что сработает через интерфейс INotifyCollectionChanged и метод OnCollectionChanged()?

Внутри самого приложения данные по приёму обновляются нормально.
Копал в отладке.

Копал в отладке.Получается что в данном случае OnPropertyChanged() не работает?

Получается OnPropertyChanged() работает неправильно? Просто дело в том, что он справлялся до этого и всё обновлял правильно.Точнее даже обновляет всё,кроме графика.

Добавил вопрос про INCC
Источник Ссылка

Внутри самого приложения данные по приёму обновляются нормально.
Если не работает обновление по методу OnPropertyChanged(), есть ли вероятность что сработает через интерфейс INotifyCollectionChanged и метод OnCollectionChanged()?

Внутри самого приложения данные по приёму обновляются нормально.

Внутри самого приложения данные по приёму обновляются нормально.
Если не работает обновление по методу OnPropertyChanged(), есть ли вероятность что сработает через интерфейс INotifyCollectionChanged и метод OnCollectionChanged()?

отформатировал вопрос
Источник Ссылка
aepot
  • 54.3k
  • 6
  • 28
  • 67
<Grid>
 <Grid.RowDefinitions>
 <RowDefinition Height="Auto"></RowDefinition>
 <RowDefinition Height="Auto"></RowDefinition>
 <RowDefinition Height="*"></RowDefinition>
 </Grid.RowDefinitions>
 <TextBlock TextWrapping="Wrap">
 Fully Responsive
 </TextBlock>
 <StackPanel Grid.Row="1" Orientation="Horizontal">
 <TextBlock VerticalAlignment="Center" Margin="0 0 10 0">Points</TextBlock>
 <Button Command="{Binding DrawPointCommand,Mode=OneWay}" >+</Button>
 <Button>/</Button>
 <Button>-</Button>
 <Button >MoveAll</Button>
 <TextBlock Margin="0 0 10 0" VerticalAlignment="Center">Series</TextBlock>
 <Button>+</Button>
 <Button>-</Button>
 </StackPanel>
 <lvc:CartesianChart Grid.Row="2" LegendLocation="Right">
 <lvc:CartesianChart LegendLocation="Right">
 <lvc:CartesianChart.Series>
 <lvc:LineSeries PointGeometry="{x:Null}" Fill="Transparent"
 StrokeThickness="3" Title="0xC0"
 Values="{Binding MyValues , UpdateSourceTrigger=PropertyChanged,Mode=OneWay}" />
 <lvc:LineSeries PointGeometry="{x:Null}" Fill="Transparent"
 StrokeThickness="3" Title="0xC1"
 Values="{Binding SPoints}" />
 </lvc:CartesianChart.Series>
 </lvc:CartesianChart>
 </lvc:CartesianChart>
</Grid>
 <Grid>
 <Grid.RowDefinitions>
 <RowDefinition Height="Auto"></RowDefinition>
 <RowDefinition Height="Auto"></RowDefinition>
 <RowDefinition Height="*"></RowDefinition>
 </Grid.RowDefinitions>
 <TextBlock TextWrapping="Wrap">
 Fully Responsive
 </TextBlock>
 <StackPanel Grid.Row="1" Orientation="Horizontal">
 <TextBlock VerticalAlignment="Center" Margin="0 0 10 0">Points</TextBlock>
 <Button Command="{Binding DrawPointCommand,Mode=OneWay}" >+</Button>
 <Button>/</Button>
 <Button>-</Button>
 <Button >MoveAll</Button>
 <TextBlock Margin="0 0 10 0" VerticalAlignment="Center">Series</TextBlock>
 <Button>+</Button>
 <Button>-</Button>
 </StackPanel>
 <lvc:CartesianChart Grid.Row="2" LegendLocation="Right">
 <lvc:CartesianChart LegendLocation="Right">
 <lvc:CartesianChart.Series>
 <lvc:LineSeries PointGeometry="{x:Null}" Fill="Transparent"
 StrokeThickness="3" Title="0xC0"
 Values="{Binding MyValues , UpdateSourceTrigger=PropertyChanged,Mode=OneWay}" />
 <lvc:LineSeries PointGeometry="{x:Null}" Fill="Transparent"
 StrokeThickness="3" Title="0xC1"
 Values="{Binding SPoints}" />
 </lvc:CartesianChart.Series>
 </lvc:CartesianChart>
 </lvc:CartesianChart>
 </Grid>
</UserControl>

Пока что попытался сделать через кнопку с командой DrawPointCommandDrawPointCommand,которая цепляет температуру из датчика.Кнопка Кнопка вечно рисует нулевое значение. Метод

Метод подписанный на DrawPointCommand:
private void DrawPoint()
{
MyValues.Add(new ObservableValue(_monitoringblock.Temperature));
}DrawPointCommand

Часть:

private void DrawPoint()
{
 MyValues.Add(new ObservableValue(_monitoringblock.Temperature));
}

Часть конструктора которая относится к графикам :
MyValues = new ChartValues<ObservableValue>
{
new ObservableValue(5), new ObservableValue(7), new ObservableValue(8), new ObservableValue(3)
};
var lineSeries = new LineSeries
{
Values = MyValues, StrokeThickness = 4, Fill = Brushes.Transparent, PointGeometrySize = 0, DataLabels = false

};
SeriesCollection = new SeriesCollection { lineSeries };
Свойство

MyValues = new ChartValues<ObservableValue>
{
 new ObservableValue(5), new ObservableValue(7), new ObservableValue(8), new ObservableValue(3)
};
var lineSeries = new LineSeries 
{
 Values = MyValues, StrokeThickness = 4, Fill = Brushes.Transparent, PointGeometrySize = 0, DataLabels = false
};
SeriesCollection = new SeriesCollection { lineSeries };

Свойство MyValues:
public ChartValues<ObservableValue> MyValues
{
get
{
return _myvalue;
}
set
{
_myvalue = value;
OnPropertyChanged(nameof(MyValues));
}
}

public ChartValues<ObservableValue> MyValues
{
 get
 {
 return _myvalue;
 }
 set
 {
 _myvalue = value;
 OnPropertyChanged(nameof(MyValues));
 }
}

В отладке по нажатию кнопки изменяется количество элементов,но судя по графику это всё нули.Через Через принятые от датчика данные не рисуются даже нули.

Так

Так выглядит событие приема по порту :
private void dataReceived(object sender, EventArgs e)
{
_myvalue.Add(new ObservableValue(MonitoringViewModel.Concentration));
OnPropertyChanged("MyValues");
}

Внутри

private void dataReceived(object sender, EventArgs e)
{
 _myvalue.Add(new ObservableValue(MonitoringViewModel.Concentration));
 OnPropertyChanged("MyValues");
}

Внутри самого приложения данные по приёму обновляются нормально.

<Grid>
 <Grid.RowDefinitions>
 <RowDefinition Height="Auto"></RowDefinition>
 <RowDefinition Height="Auto"></RowDefinition>
 <RowDefinition Height="*"></RowDefinition>
 </Grid.RowDefinitions>
 <TextBlock TextWrapping="Wrap">
 Fully Responsive
 </TextBlock>
 <StackPanel Grid.Row="1" Orientation="Horizontal">
 <TextBlock VerticalAlignment="Center" Margin="0 0 10 0">Points</TextBlock>
 <Button Command="{Binding DrawPointCommand,Mode=OneWay}" >+</Button>
 <Button>/</Button>
 <Button>-</Button>
 <Button >MoveAll</Button>
 <TextBlock Margin="0 0 10 0" VerticalAlignment="Center">Series</TextBlock>
 <Button>+</Button>
 <Button>-</Button>
 </StackPanel>
 <lvc:CartesianChart Grid.Row="2" LegendLocation="Right">
 <lvc:CartesianChart LegendLocation="Right">
 <lvc:CartesianChart.Series>
 <lvc:LineSeries PointGeometry="{x:Null}" Fill="Transparent"
 StrokeThickness="3" Title="0xC0"
 Values="{Binding MyValues , UpdateSourceTrigger=PropertyChanged,Mode=OneWay}" />
 <lvc:LineSeries PointGeometry="{x:Null}" Fill="Transparent"
 StrokeThickness="3" Title="0xC1"
 Values="{Binding SPoints}" />
 </lvc:CartesianChart.Series>
 </lvc:CartesianChart>
 </lvc:CartesianChart>
</Grid>

Пока что попытался сделать через кнопку с командой DrawPointCommand,которая цепляет температуру из датчика.Кнопка вечно рисует нулевое значение. Метод подписанный на DrawPointCommand:
private void DrawPoint()
{
MyValues.Add(new ObservableValue(_monitoringblock.Temperature));
}

Часть конструктора которая относится к графикам :
MyValues = new ChartValues<ObservableValue>
{
new ObservableValue(5), new ObservableValue(7), new ObservableValue(8), new ObservableValue(3)
};
var lineSeries = new LineSeries
{
Values = MyValues, StrokeThickness = 4, Fill = Brushes.Transparent, PointGeometrySize = 0, DataLabels = false

};
SeriesCollection = new SeriesCollection { lineSeries };
Свойство MyValues:
public ChartValues<ObservableValue> MyValues
{
get
{
return _myvalue;
}
set
{
_myvalue = value;
OnPropertyChanged(nameof(MyValues));
}
}

В отладке по нажатию кнопки изменяется количество элементов,но судя по графику это всё нули.Через принятые от датчика данные не рисуются даже нули.

Так выглядит событие приема по порту :
private void dataReceived(object sender, EventArgs e)
{
_myvalue.Add(new ObservableValue(MonitoringViewModel.Concentration));
OnPropertyChanged("MyValues");
}

Внутри самого приложения данные по приёму обновляются нормально.

 <Grid>
 <Grid.RowDefinitions>
 <RowDefinition Height="Auto"></RowDefinition>
 <RowDefinition Height="Auto"></RowDefinition>
 <RowDefinition Height="*"></RowDefinition>
 </Grid.RowDefinitions>
 <TextBlock TextWrapping="Wrap">
 Fully Responsive
 </TextBlock>
 <StackPanel Grid.Row="1" Orientation="Horizontal">
 <TextBlock VerticalAlignment="Center" Margin="0 0 10 0">Points</TextBlock>
 <Button Command="{Binding DrawPointCommand,Mode=OneWay}" >+</Button>
 <Button>/</Button>
 <Button>-</Button>
 <Button >MoveAll</Button>
 <TextBlock Margin="0 0 10 0" VerticalAlignment="Center">Series</TextBlock>
 <Button>+</Button>
 <Button>-</Button>
 </StackPanel>
 <lvc:CartesianChart Grid.Row="2" LegendLocation="Right">
 <lvc:CartesianChart LegendLocation="Right">
 <lvc:CartesianChart.Series>
 <lvc:LineSeries PointGeometry="{x:Null}" Fill="Transparent"
 StrokeThickness="3" Title="0xC0"
 Values="{Binding MyValues , UpdateSourceTrigger=PropertyChanged,Mode=OneWay}" />
 <lvc:LineSeries PointGeometry="{x:Null}" Fill="Transparent"
 StrokeThickness="3" Title="0xC1"
 Values="{Binding SPoints}" />
 </lvc:CartesianChart.Series>
 </lvc:CartesianChart>
 </lvc:CartesianChart>
 </Grid>
</UserControl>

Пока что попытался сделать через кнопку с командой DrawPointCommand,которая цепляет температуру из датчика. Кнопка вечно рисует нулевое значение.

Метод подписанный на DrawPointCommand:

private void DrawPoint()
{
 MyValues.Add(new ObservableValue(_monitoringblock.Temperature));
}

Часть конструктора которая относится к графикам :

MyValues = new ChartValues<ObservableValue>
{
 new ObservableValue(5), new ObservableValue(7), new ObservableValue(8), new ObservableValue(3)
};
var lineSeries = new LineSeries 
{
 Values = MyValues, StrokeThickness = 4, Fill = Brushes.Transparent, PointGeometrySize = 0, DataLabels = false
};
SeriesCollection = new SeriesCollection { lineSeries };

Свойство MyValues:

public ChartValues<ObservableValue> MyValues
{
 get
 {
 return _myvalue;
 }
 set
 {
 _myvalue = value;
 OnPropertyChanged(nameof(MyValues));
 }
}

В отладке по нажатию кнопки изменяется количество элементов,но судя по графику это всё нули. Через принятые от датчика данные не рисуются даже нули.

Так выглядит событие приема по порту :

private void dataReceived(object sender, EventArgs e)
{
 _myvalue.Add(new ObservableValue(MonitoringViewModel.Concentration));
 OnPropertyChanged("MyValues");
}

Внутри самого приложения данные по приёму обновляются нормально.

часть события DataReceived
Источник Ссылка
Загрузка
в текст добавлено 399 символов
Источник Ссылка
Загрузка
Добавил разметку графика и часть конструктора
Источник Ссылка
Загрузка
отформатировал вопрос
Источник Ссылка
aepot
  • 54.3k
  • 6
  • 28
  • 67
Загрузка
Источник Ссылка
Загрузка
lang-cs

AltStyle によって変換されたページ (->オリジナル) /