Проблема с диаграммой WPF внутри ListBox - PullRequest
2 голосов
/ 08 ноября 2010

Я использовал DataVisualization.Charting.Chart для создания нескольких диаграмм.Все работает очень хорошо, до тех пор, пока я не помещу то же самое в DataTemplate ListBox.

Внутри ListBox данные диаграммы отображаются правильно, но легенды не отображаются.

Я использовал диаграмму Normal LineSeries.Вот код:

<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 правильно показывает данные и график.Но Легенды не появляются.

Я уже пытался поместить тот же график за пределы ListBox, и он правильно отображает легенды, но не внутри DataTemplate.

Было бы полезно, если бы кто-нибудь сказал мне, где я неправ в этом.

1 Ответ

3 голосов
/ 19 ноября 2010

Я подозреваю, что проблема в вашем стиле 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.1005 * Кстати, вы неправильно написали «Температура».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...