2010-11-08 5 views
2

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.

+0

Personne n'y répond. Mais je cherche désespérément un soln. – abhishek

+0

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. –

+0

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

Répondre

3

Je suppose que le problème est dans votre style listBasic. Votre XAML fonctionne parfaitement pour moi. Je viens dans une collais nouvelle fenêtre et ajouté ce qui suit dans 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), 
     } 
    }}; 

Pour plus d'aide, s'il vous plaît nous montrer les styles que vous utilisez et faites-nous votre version WPFToolkit. Par ailleurs, vous avez mal orthographié "Température".

+0

Oui. Je suspecte la même chose. Je vais vérifier le style et voir le problème avec le style. – abhishek