Devexpress DXCharts (обновить, обновить, очистить) новый экземпляр? - PullRequest
0 голосов
/ 11 ноября 2011

Я использую wpf и c # со сторонними библиотеками DevExpress. У меня проблема с DXCharts. Я пробовал несколько разных вещей, чтобы очистить или обновить график безрезультатно. Я связываю данные с таблицей данных (созданной на лету) со свойством зависимости для источника данных.

Свойства зависимостей для диаграммы, похоже, не переопределяются, когда для новых данных задано свойство подложки. Это дает мне наложение точек на графике. Как видно из приведенных ниже примеров.

1-й набор данных 1st set of Data Points

2-й набор данных 2nd set of Data Points

Я также попытался создать новые экземпляры элемента управления Chart, и он по-прежнему показывает старые свойства зависимостей. Пользовательский контроль DXchart встроен в Контент Контроля. Я связываю Диаграмму через свойство контента. Все это вложено под вкладку DevExpress.

Вот часть кода ниже:

Свойства зависимостей

public static readonly DependencyProperty DataTableChartProperty = DependencyProperty.Register
        ("DataTableChart", typeof(DataTable), typeof(MainWindowViewModel));

public static readonly DependencyProperty ContentElementProperty = DependencyProperty.Register
        ("ContentElement", typeof(FrameworkElement), typeof(MainWindowViewModel));

Свойства основы

public DataTable DataTableChart
    {
        get { return (DataTable)this.GetValue(DataTableChartProperty); }
        set { this.SetValue(DataTableChartProperty, value); }

public FrameworkElement ContentElement
    {
        get { return (FrameworkElement)this.GetValue(ContentElementProperty); }
        set { this.SetValue(ContentElementProperty, value); }
    }

UserControl

<UserControl x:Class="Reporting_DIMS.UI.ChartControl"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
         xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
         xmlns:dxb="http://schemas.devexpress.com/winfx/2008/xaml/bars"
         xmlns:dxc="http://schemas.devexpress.com/winfx/2008/xaml/charts"
         xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
         xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
         mc:Ignorable="d"
         d:DesignHeight="700" d:DesignWidth="1100">
<Grid>
    <Border Padding="3">
        <dxc:ChartControl Margin="0" Name="chartControl" DataSource="{Binding DataTableChart}">
            <dxc:ChartControl.Diagram>
                <dxc:XYDiagram2D SeriesDataMember="DIMS User">
                    <dxc:XYDiagram2D.SeriesTemplate>
                        <dxc:BarSideBySideSeries2D ValueDataMember="Count" ArgumentDataMember="Entry DateTime" />
                    </dxc:XYDiagram2D.SeriesTemplate>
                </dxc:XYDiagram2D>
            </dxc:ChartControl.Diagram>
            <dxc:ChartControl.Legend>
                <dxc:Legend x:Name="legend"/>
            </dxc:ChartControl.Legend>
        </dxc:ChartControl>
    </Border>
</Grid>

Небольшая часть главного окна

<dx:DXTabItem Header="Log Charts" Name="dXTabItem2">
                    <ContentControl x:Name="contentControl" Content="{Binding     ContentElement}"/>
                </dx:DXTabItem>

Если у кого-то есть идеи, я был бы очень признателен. Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 06 ноября 2012

Rreeves правильно. Простой обходной путь для меня заключался в том, чтобы обернуть мой DXChartControl во второй ContentControl. Вместо того, чтобы связываться напрямую с ChartControl, пусть внутренний ContentControl передает привязку к ChartControl, поэтому при изменении содержимого ContentControl генерирует новый экземпляр с помощью ContentTemplate.

    <DataTemplate x:Key="chartTemplate">
        <dex:ChartControl DataSource="{Binding}" DataContextChanged="chartControl_DataContextChanged_1"/>
    </DataTemplate>     
    <ContentControl  Grid.Row="1" ContentTemplate="{StaticResource ResourceKey=chartTemplate}" Content="{Binding 'YOUR ITEMSSOURCE'}"/>

Затем вы можете восстановить диаграмму в DataContextChanged.

Надеюсь, это поможет!

0 голосов
/ 30 ноября 2011

Я закончил тем, что удалил старый объект графика и создал новый.Это предполагаемое поведение Charts per DevExpress.

...