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