したがって、更新中の監視可能なコレクションがあり、値が変更されていることがわかりますが、UI は変更されていません。これが私が持っているものです
public static class GeoLocations
{
public static ObservableCollection<Station> _locations = new ObservableCollection<Station>();
public static ObservableCollection<Station> locations
{
get { return _locations; }
set
{
_locations = value;
}
}
}
public class Station
{
public int StationNumber { get; set; }
// Bunch more properties here ...
}
次に、別のスレッドのすべてのプロパティに対して乱数を生成するクラスがあります。使用しているチャートのアイテムにカーソルを合わせると、アイテムが更新されていることがわかるので、それらが変更されていることはわかっています。ただし、チャート自体は更新されていません。最初の数字が 1.6 だとしましょう。その後、1.4 0.5 1.2 に更新されます... チャートは 1.6 のままです。
私が使用しているチャートは Infragistics XamDataChart です。問題は、クラスの実装方法にあると思われます。グラフだけでなく、更新する必要がある UI がもっとあるので、これを理解したら、ここでそれらを機能させることができることを願っています。
XamDataChart の xaml は次のとおりです。
<ig:XamDataChart Style="{StaticResource BarChartStyle}" Grid.Row="1" Grid.Column="1">
<ig:XamDataChart.Axes>
<ig:NumericYAxis x:Name="YAxis" MinimumValue="0" Interval="0.4" Label="{}{}" FontSize="8" MaximumValue="1.7" MajorStroke="#FF2C2C2C" Foreground="White" BorderBrush="White" FontWeight="Bold">
<ig:NumericYAxis.LabelSettings>
<ig:AxisLabelSettings Extent="23" Foreground="White"/>
</ig:NumericYAxis.LabelSettings>
</ig:NumericYAxis>
<ig:CategoryXAxis x:Name="XAxis"
ItemsSource="{Binding}"
Label="{}{IndexNum}"
Interval="1"
MajorStroke="Black"
Foreground="White"
BorderBrush="White"
DataContextChanged="CollectionChanged">
<ig:CategoryXAxis.LabelSettings>
<ig:AxisLabelSettings Extent="17" VerticalAlignment="Bottom" FontSize="11" Foreground="White"/>
</ig:CategoryXAxis.LabelSettings>
</ig:CategoryXAxis>
</ig:XamDataChart.Axes>
<ig:XamDataChart.Series>
<ig:ColumnSeries Style="{StaticResource ColumnSeriesStyle}" x:Name="Series1" ValueMemberPath="StationNumber " XAxis="{Binding ElementName=XAxis}" YAxis="{Binding ElementName=YAxis}" Brush="DodgerBlue" Outline="Black">
</ig:ColumnSeries>
</ig:XamDataChart.Series>
</ig:XamDataChart>
コードビハインド
XAxis.ItemsSource = GeoLocations.locations;
Series1.ItemsSource = GeoLocations.locations;