图工作在第一个表项,但不是第二个表项
本文关键字:第二个 第一个 工作 | 更新日期: 2023-09-27 18:10:38
我使用的是Wpf Toolkit,当我把它作为第二个表项时,我意识到它不起作用。有什么问题吗?
这是我的图表:
<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;
}
}
}
如果你删除了
DataContext="{Binding}"
从LineSeries,它应该工作。不幸的是,我无法解释为什么它不起作用。但是,由于DataContexts通常是在控件层次中派生的,因此在这一点上没有必要,并且不知何故导致了这个奇怪的问题。
HTH