J'ai utilisé DataVisualization.Charting.Chart pour produire quelques graphiques. Tout fonctionne très bien, jusqu'à ce que je mette la même chose dans un DataTemplate d'un ListBox.Problème avec le graphique WPF dans ListBox
A l'intérieur de la ListBox, les données du graphique s'affichent correctement, mais les légendes ne sont pas affichées.
J'ai utilisé le graphique Normal LineSeries. Voici le code:
<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>
Vous pouvez voir, j'ai placé un ListView et un graphique. Le ListView montre les données correctement ainsi que le graphique. Mais les légendes ne se présentent pas.
J'ai déjà essayé de mettre le même graphique en dehors de la ListBox et il affiche correctement les légendes mais pas à l'intérieur du DataTemplate.
Il serait utile que quelqu'un me dise où je me trompe.
Personne n'y répond. Mais je cherche désespérément un soln. – abhishek
Abhishek, j'ai besoin d'en savoir plus sur votre application afin de pouvoir vous aider. Je t'ai laissé tomber un mail à yahoo. S'il vous plaît vérifier et répondre. –
Je viens de coller votre xaml dans une nouvelle fenêtre et la légende est visible. Je n'ai ni styles ni reliures, juste copiés comme c'est – Ben