Динамическое изменение типов диаграмм инструментария WPF с использованием DataTemplateSelector - PullRequest
0 голосов
/ 03 ноября 2011

У меня есть две диаграммы набора инструментов WPF (столбец и круговая диаграмма).

<- Столбчатая диаграмма ->

<DVC:Chart Name="mcChartPie" Title="{Binding ChartName}"       
DataContext="{Binding SelectedChart}">
<DVC:Chart.Series>
<DVC:PieSeries ItemsSource="{Binding Columns}" Title="Some Chart"
IndependentValueBinding="{Binding Path=Name}" DependentValueBinding="{Binding 
Path=Value}"></DVC:PieSeries>
</DVC:Chart.Series>
</DVC:Chart>

<- Круговая диаграмма ->

    <DVC:Chart Name="mcChart" Title="{Binding ChartName}"    
DataContext="{Binding SelectedChart}" Style="{DynamicResource Info>
<DVC:Chart.Series>
<DVC:ColumnSeries ItemsSource="{Binding Columns}" Title="Some Chart"  
IndependentValueBinding="{Binding Path=Name}" DependentValueBinding="{Binding 
Path=Value}" Background="Black" AnimationSequence="FirstToLast" ></DVC:ColumnSeries>
</DVC:Chart.Series>
</DVC:Chart>

Существует поле со списком, который позволяет пользователю выбрать тип диаграммы.Когда пользователь выбирает «Тип столбчатой ​​диаграммы», шаблон столбчатой ​​диаграммы должен быть видимым, а когда пользователь выбирает «Тип круговой диаграммы», шаблон круговой диаграммы должен быть видимым.Как я могу сделать это, переопределив метод SelectTemplate () в классе DataTemplateSelector?

1 Ответ

0 голосов
/ 26 января 2013

Попробуйте что-то вроде этого, просто простой метод, который создает новую серию (Pie, Bar, Column, Lines, Area), а затем добавляет серию в элемент управления диаграммы после очистки предыдущей серии, загруженной в элемент управления диаграммы.

С уважением

    void loadPieSerie()
    {
        System.Windows.Controls.DataVisualization.Charting.PieSeries pieSerie = new System.Windows.Controls.DataVisualization.Charting.PieSeries();
        chartControl.Series.Clear();

        List<KeyValuePair<string, int>> valueList= new List<KeyValuePair<string, int>>();
        valueList.Add(new KeyValuePair<string, int>("Dogs", 50));
        valueList.Add(new KeyValuePair<string, int>("Cats", 20));
        valueList.Add(new KeyValuePair<string, int>("Dinosaurs", 30));
        pieSerie.DependentValuePath = "Value";
        pieSerie.IndependentValuePath = "Key";
        pieSerie.ItemsSource = values;
        chartControl.Series.Add(pieSerie);
    }
...