我正在使用Wpf Toolkit作为图表,我意识到当我将它作为第二个tabitem时它不起作用。可能是什么问题?
这是我的图表:
<TabControl>
<TabItem Header="PowerFlow">
</TabItem>
<TabItem Header="Graph" Name="Graphs">
<ScrollViewer HorizontalScrollBarVisibility="Auto"
VerticalScrollBarVisibility="Auto" Margin="0,-28,0,28">
<Grid Height="921" Background="DarkGray">
<chartingToolkit:Chart Name="lineChart" Title="Power Graph" Background="YellowGreen" Foreground="DarkBlue"
VerticalAlignment="Top" Margin="16,36,20,0" Height="432" IsEnabled="True" >
<chartingToolkit:LineSeries Title="SolarCell"
ItemsSource="{Binding}" DependentValueBinding="{Binding Path=Value}"
IndependentValueBinding="{Binding Path=Key}"
IsSelectionEnabled="True" DataContext="{Binding}">
<chartingToolkit:LineSeries.DependentRangeAxis>
<chartingToolkit:LinearAxis Orientation="Y" Title="Power (W)"></chartingToolkit:LinearAxis>
</chartingToolkit:LineSeries.DependentRangeAxis>
</chartingToolkit:LineSeries>
</chartingToolkit:Chart>
<Button Content="Refresh" Height="23" HorizontalAlignment="Left" Margin="718,391,0,0" Name="button1" VerticalAlignment="Top" Width="75" />
<TextBox Height="23" HorizontalAlignment="Left" Margin="696,73,0,0" Name="textBox7" VerticalAlignment="Top" Width="97" Loaded="textBox7_Loaded" />
<Label Content="Time started:" Height="28" HorizontalAlignment="Left" Margin="606,73,0,0" Name="label1" VerticalAlignment="Top" Width="84" />
</Grid>
</ScrollViewer>
</TabItem>
</TabControl>
</Window>
和背后的代码:
public partial class MainWindow : Window
{
ObservableCollection<KeyValuePair<double, double>> Power = new ObservableCollection<KeyValuePair<double, double>>();
double i = 0;
public MainWindow()
{
InitializeComponent();
TabItem Graphs = new TabItem();
DispatcherTimer timer = new DispatcherTimer();
timer.Interval = new TimeSpan(0, 0, 1); // per 5 seconds, you could change it
timer.Tick += new EventHandler(timer_Tick);
timer.IsEnabled = true;
}
Random random = new Random(DateTime.Now.Millisecond);
void timer_Tick(object sender, EventArgs e)
{
Power.Add(new KeyValuePair<double, double>(i, random.NextDouble()));
i += 5;
lineChart.DataContext = Power;
}
}
}
答案 0 :(得分:2)
如果删除该行
DataContext="{Binding}"
从LineSeries 它应该工作。 不幸的是,我无法解释为什么它不起作用。但是由于DataContexts通常是在控制层次结构中派生出来的,所以此时不一定会出现这种奇怪的问题。
HTH