gpt4 book ai didi

c# - 如何实时刷新WPF Toolkit ColumnSeries Chart

转载 作者:行者123 更新时间:2023-11-30 17:34:46 33 4
gpt4 key购买 nike

应用程序成功地从 ColumnSeries WPF 图表中添加和清除数据,但未能重新添加后清除。按照其他地方的建议将 DataContext 设置为 null 并没有解决问题。以下是代码,感谢您的帮助:

public partial class MainWindow : Window
{

public MainWindow()
{
dataToChart = new Input();
InitializeComponent();
this.DataContext = dataToChart;
}

private void Button_Click_Clear(object sender, RoutedEventArgs e)
{
foreach (var series in columnChart.Series.OfType<Series>())
{
series.DataContext = null;
}
columnChart.Series.Clear();
dataToChart.Clear();
}

private void Button_Click_Add(object sender, RoutedEventArgs e)
{
dataToChart.Add(new KeyValuePair<string, int>("Test", 10));
}
}

输入.cs

public class Input
{
public ObservableCollection<KeyValuePair<string, int>> ValueList { get; private set; }

public Input()
{
this.ValueList = new ObservableCollection<KeyValuePair<string, int>>();
}

public void Add(KeyValuePair<string, int> data)
{
ValueList.Add(data);
}

public void Clear()
{
ValueList.Clear();
}
}

主窗口.xaml

<Window 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:chartingToolkit="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit"
x:Class="IES_Console.MainWindow"
x:Name="wndMain" Title="IES Console" AllowsTransparency="True" WindowStyle="None" WindowStartupLocation="Manual" ResizeMode="NoResize" Background="Transparent" Foreground="{x:Null}" Loaded="Window_Loaded" Closing="Window_Closing" KeyUp="Window_KeyUp" MouseLeftButtonDown="Window_MouseLeftButtonDown" SizeChanged="Window_SizeChanged" LocationChanged="Window_LocationChanged" Icon="/IES%20Console;component/48x48.ico" MouseLeave="wndMain_MouseLeave" mc:Ignorable="d" FontFamily="Arial" Width="Auto" Height="Auto" SizeToContent="WidthAndHeight">


<Grid x:Name="MainGrid" Background="Black" ShowGridLines="False" Width="531" Height="700" VerticalAlignment="Top" HorizontalAlignment="Left">

<!--Code taken out for simplicity-->


<Grid x:Name="subFooter" Grid.Row="3" Background =" Black" Margin="0,20,0,-144">


<TextBlock x:Name="textBlock1" VerticalAlignment="top" Margin="10,10,0,0" TextWrapping="Wrap"
Text="TextBlock" Foreground="White" Width="511" Height="50"/>

<chartingToolkit:Chart Height="262" HorizontalAlignment="Left"
Margin="33,0,0,10" Name="columnChart" Title="Column Series Demo"
VerticalAlignment="Bottom" Width="360">

<chartingToolkit:ColumnSeries DependentValuePath="Value" Visibility="Visible"
IndependentValuePath="Key" ItemsSource="{Binding ValueList}" />

<chartingToolkit:Chart.LegendStyle>
<Style TargetType="Control">
<Setter Property="Width" Value="0" />
<Setter Property="Height" Value="0" />
</Style>
</chartingToolkit:Chart.LegendStyle>

</chartingToolkit:Chart>

<Button Content="Data Clear" HorizontalAlignment="Left" Margin="426,65,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click_Clear"/>
<Button Content="Data Add" HorizontalAlignment="Left" Margin="426,108,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click_Add"/>

</Grid>
</Grid>
</Window>

最佳答案

问题出在代码上

private void Button_Click_Clear(object sender, RoutedEventArgs e)
{
foreach (var series in columnChart.Series.OfType<Series>())
{
series.DataContext = null;
}
columnChart.Series.Clear();
dataToChart.Clear();
}
  1. 您正在将 DataContext 设置为 null,但之后您没有重新分配它,导致数据馈送中断。
  2. columnChart.Series.Clear() 行清除了您在 XAML 中声明的 ColumnSeries。同样,不重新分配会导致图表保持空白。

您可以使用

来克服这两个问题
private void Button_Click_Clear(object sender, RoutedEventArgs e)
{
dataToChart.Clear();
foreach (var series in columnChart.Series.OfType<Series>())
{
series.DataContext = null;
series.DataContext = dataToChart;
}
}

当然,如果多个系列具有不同的DataContext,您需要将正确 Input 重新分配给相应的系列.DataContext

关于c# - 如何实时刷新WPF Toolkit ColumnSeries Chart,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42014776/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com