c# - ListBox 内的 WPF 图表问题

标签 c# wpf charts

我一直在使用 DataVisualization.Charting.Chart 来生成一些图表。一切都工作得很好,直到我将其放入列表框的数据模板中。

在列表框中,图表数据正确显示,但图例未显示。

我一直在使用法线系列图表。这是代码:

<ListBox Style="{DynamicResource listBasic}"
                         FontSize="12"
                         FontWeight="Normal"
                         ItemsSource="{Binding PsychrometricLogs}">
                    <ListBox.GroupStyle>
                        <GroupStyle>
                            <GroupStyle.ContainerStyle>
                                <Style TargetType="{x:Type GroupItem}">
                                    <Setter Property="Template">
                                        <Setter.Value>
                                            <ControlTemplate>
                                                <Expander Header="{Binding Name}"
                                                          FontFamily="Calibri"
                                                          FontSize="18"
                                                          Foreground="{DynamicResource defForegroundBrush}"
                                                          IsExpanded="True">
                                                    <ItemsPresenter />
                                                </Expander>
                                            </ControlTemplate>
                                        </Setter.Value>
                                    </Setter>
                                </Style>
                            </GroupStyle.ContainerStyle>
                        </GroupStyle>
                    </ListBox.GroupStyle>
                    <ListBox.ItemTemplate>
                        <DataTemplate>

                                <Grid>
                                    <Border CornerRadius="5"
                                            Margin="2,5,2,5"
                                            Opacity=".3"
                                            Background="#000000" />
                                    <DockPanel>
                                    <chart:Chart Title="{Binding DisplayName}"
                                                 FontSize="14"
                                                 DockPanel.Dock="Top"
                                                 LegendTitle="Legends"
                                                 Margin="20,15,20,5"
                                                 Foreground="#000000"
                                                 DataContext="{Binding Logs}">
                                        <chart:LineSeries Title="Temperature"
                                                          AnimationSequence="FirstToLast"
                                                          IndependentValueBinding="{Binding TimeStamp}"
                                                          DependentValueBinding="{Binding Temparature}"
                                                          ItemsSource="{Binding}" />
                                        <chart:LineSeries Title="Relative Humidity"
                                                          AnimationSequence="FirstToLast"
                                                          IndependentValueBinding="{Binding TimeStamp}"
                                                          DependentValueBinding="{Binding RelativeHumidity}"
                                                          ItemsSource="{Binding}" />
                                        <chart:LineSeries Title="Grains Per Pound"
                                                          AnimationSequence="FirstToLast"
                                                          IndependentValueBinding="{Binding TimeStamp}"
                                                          DependentValueBinding="{Binding GrainsPerPound}"
                                                          ItemsSource="{Binding}" />
                                        <chart:LineSeries Title="Grains Depression"
                                                          AnimationSequence="FirstToLast"
                                                          IndependentValueBinding="{Binding TimeStamp}"
                                                          DependentValueBinding="{Binding GrainsDepression}"
                                                          ItemsSource="{Binding}" />
                                    </chart:Chart>
                                    <ListView ItemsSource="{Binding Logs}"
                                              DockPanel.Dock="Top"
                                              Margin="5,0,5,5"
                                              Padding="0">
                                        <ListView.View>
                                            <GridView AllowsColumnReorder="True">
                                                <GridViewColumn Header="Time Stamp"
                                                                DisplayMemberBinding="{Binding TimeStamp}" />
                                                <GridViewColumn Header="Temperature"
                                                                DisplayMemberBinding="{Binding Temparature}" />
                                                <GridViewColumn Header="RH"
                                                                DisplayMemberBinding="{Binding RelativeHumidity}" />
                                                <GridViewColumn Header="GPP"
                                                                DisplayMemberBinding="{Binding GrainsPerPound}" />
                                                <GridViewColumn Header="GD"
                                                                DisplayMemberBinding="{Binding GrainsDepression}" />
                                            </GridView>
                                        </ListView.View>
                                    </ListView>
                                    </DockPanel>    
                                </Grid>

                        </DataTemplate>
                    </ListBox.ItemTemplate>
                </ListBox>

你可以看到,我放置了一个ListView和一个Chart。 ListView 可以正确显示数据和图表。但传奇并没有出现。

我已经尝试将相同的图表放在列表框之外,它可以正确显示图例,但不能放在数据模板内。

如果有人告诉我我在这方面错在哪里,那将会很有帮助。

最佳答案

我怀疑问题出在你的listBasic风格上。你的 XAML 非常适合我。我只是将其粘贴到一个新窗口中,并在 InitializeComponent() 中添加了以下内容:

  var rand = new Random();
  DataContext = new { PsychrometricLogs =
    from i in Enumerable.Range(0, 5)
    select new
    {
      Logs =
        from j in Enumerable.Range(0, 10)
        select new
        {
          TimeStamp = rand.Next(10),
          Temparature = (decimal)rand.Next(100),
          RelativeHumidity = (decimal)rand.Next(100),
          GrainsPerPound = (decimal)rand.Next(10),
          GrainsDepression = (decimal)rand.Next(10),
        }
    }};

如需其他帮助,请向我们展示您正在使用的样式并让我们知道您的 WPFToolkit 版本。

顺便说一句,您拼错了“温度”。

关于c# - ListBox 内的 WPF 图表问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4123029/

相关文章:

c# - 在 ASP.NET 中键入时显示搜索结果

c# - 缓存已编译的表达式委托(delegate)

c# - 在运行时注入(inject)值

c# - 使用 SharpDX 显示 D3DImage

PHPlot 与 mySQL 未更新新条目

css - 使用 CSS 使图表彼此靠近

javascript - Google 图表的访问限制

c# - 在WPF中使用Image控件显示System.Drawing.Bitmap

java L&F 获得现代 "wpf"外观

c# - 是否可以在装饰层之上绘制 UI 元素?