图工作在第一个表项,但不是第二个表项

本文关键字:第二个 第一个 工作 | 更新日期: 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

相关文章: