Как видно из названия, я пытаюсь обновить Palette
telerik:RadPieChart
асинхронно. Я реализовал Task
, который пытается проверять наличие новых записей с заданным интервалом и обновляет пользовательский интерфейс, если таковые имеются. Все остальные элементы управления обновляются правильно, кроме Palette
из telerik:RadPieChart
. Palette
исчезнет после того, как Task
попытается обновить его. Вот диаграмма p ie, с которой я работаю.
<telerik:RadPieChart Name="PieLinearChart" Foreground="Gainsboro" FontSize="12" FontWeight="Black" Grid.Row="0" Palette="{Binding Tab.CurrentPoC.PalettePie1}" Height="50px">
<telerik:RadPieChart.Series>
<telerik:DoughnutSeries ShowLabels="True" InnerRadiusFactor="0.4" ValueBinding="Sum" ItemsSource="{Binding Tab.CurrentPoC.PieChart1, Mode=TwoWay}" />
</telerik:RadPieChart.Series>
</telerik:RadPieChart>
Однако значения telerik:DoughnutSeries
обновляются.
Код выглядит примерно так:
public Task Init()
{
.......
.......
ExchangeFile.DataUpdated += Exchange_DataUpdated;
.......
.......
}
//This method was called every certain interval
//and works from the background.
private void Exchange_DataUpdated()
{
......
......
//Setting colors to the Palette
//which didn't work in this case
//(works well for other situations)
PalettePie1 = new ChartPalette();
ChartPalette tmpPalette = new ChartPalette();
tmpPalette.GlobalEntries.Add(new PaletteEntry(Utilities.NvarBrushUtils.GetBrush("Red")));
tmpPalette.GlobalEntries.Add(new PaletteEntry(Utilities.NvarBrushUtils.GetBrush("Blue")));
tmpPalette.GlobalEntries.Add(new PaletteEntry(Utilities.NvarBrushUtils.GetBrush("Yellow")));
tmpPalette.GlobalEntries.Add(new PaletteEntry(Utilities.NvarBrushUtils.GetBrush("Green")));
PalettePie1 = tmpPalette;
......
}
Я тоже пробовал что-то подобное, но не помогло:
Application.Current.Dispatcher.Invoke(new Action(() => {
......
ChartPalette tmpPalette = new ChartPalette();
tmpPalette.GlobalEntries.Add(new PaletteEntry(Utilities.NvarBrushUtils.GetBrush("Red")));
tmpPalette.GlobalEntries.Add(new PaletteEntry(Utilities.NvarBrushUtils.GetBrush("Blue")));
tmpPalette.GlobalEntries.Add(new PaletteEntry(Utilities.NvarBrushUtils.GetBrush("Yellow")));
tmpPalette.GlobalEntries.Add(new PaletteEntry(Utilities.NvarBrushUtils.GetBrush("Green")));
PalettePie1 = new ChartPalette();
PalettePie1 = tmpPalette;
......
}));
Пожалуйста, помогите!