2011-11-11 30 views
0

我正在使用wpf和c#與第三方DevExpress庫。我遇到DXCharts的問題。我嘗試了一些不同的事情來清除或更新圖表無濟於事。我是數據綁定到一個數據表(建立在飛行)與數據源的依賴屬性。Devexpress DXCharts(刷新,更新,清除)新實例?

當新數據設置爲支持屬性時,圖表的依賴項屬性似乎不會被覆蓋。這讓我在圖表上疊加點。正如你在下面的例子中看到的那樣。

第一盤數據 1st set of Data Points

第2集數據 2nd set of Data Points

的我也嘗試創建圖表控件及其仍然顯出老綁定依賴屬性的新實例。 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 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> 

如果任何人有任何想法,我將不勝感激。提前致謝!

+1

我想出了它與依賴屬性完全無關的問題。我將陳舊的數據粘貼到正在遷移到新數據表的數據集中。我剛剛創建了一個新實例,一切都很好。 – rreeves

回答

0

我最終刪除了舊的圖表對象並創建了一個新的圖表對象。這是每個DevExpress圖表的預期行爲。

2

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中的圖表。

希望這會有所幫助!