Обновление telerik: палитра RadPieChart не работает асинхронно - PullRequest
0 голосов
/ 07 января 2020

Как видно из названия, я пытаюсь обновить 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;
......
 }));

Пожалуйста, помогите!

...