我一直在使用 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/