Wpf 异步更新telerik:RadPieChart调色板不会';行不通

Wpf 异步更新telerik:RadPieChart调色板不会';行不通,wpf,xamarin,asynchronous,telerik,mvvm-light,Wpf,Xamarin,Asynchronous,Telerik,Mvvm Light,正如标题所示,我正在尝试异步更新telerik:RadPieChart的调色板。我已经实现了一个任务,它尝试在给定的时间间隔内检查新记录,并在有新记录时更新UI。除了telerik:RadPieChart的调色板,其他所有控件都在正确更新。任务尝试更新后,调色板将消失。这是我正在使用的饼图 <telerik:RadPieChart Name="PieLinearChart" Foreground="Gainsboro" FontSize="12" FontWeight="Black" Gr

正如标题所示,我正在尝试异步更新
telerik:RadPieChart
调色板。我已经实现了一个
任务
,它尝试在给定的时间间隔内检查新记录,并在有新记录时更新UI。除了
telerik:RadPieChart
调色板
,其他所有控件都在正确更新。
任务尝试更新后,
调色板
将消失。这是我正在使用的饼图

<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>
我也尝试过类似的方法,但没有帮助:

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;
......
 }));

请帮忙

值正在更新还是未更新?此外,您还必须在UIThread或主线程上实现UI的任何更改,否则这些更改将不会发生visible@Saamer. 嗨,萨默。这些值正在完全更新。除
调色板
外,所有其他控件都在更新。如何在UIThread上实现UI的更改?我是WPF或telerik的新手。谢谢。你能在C#后面分享你的代码吗code@Saamer抱歉耽搁了。我已经编辑并包含了代码。谢谢。只需按照此处的步骤操作:并将所有内容放在
Exchange\u DataUpdated
事件处理程序中,以便使用
SynchronizationContext
Dispatcher
在主/UI线程上运行
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;
......
 }));