Динамическое изменение типов диаграмм WPF Toolkit с помощью DataTemplateSelector

У меня есть две диаграммы инструментария 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?


person user1020800    schedule 03.11.2011    source источник
comment
Единственный способ - создать 2 пользовательских элемента управления с 2 шаблонами данных и переключить их. Как использовать класс DataTemplateSelector, который я описал в своем ответе на этот вопрос: stackoverflow.com/questions/5309099/.   -  person vortexwolf    schedule 03.11.2011
comment
Спасибо! Это действительно полезно!   -  person user1020800    schedule 05.11.2011
comment
Можете ли вы написать код, соответствующий типам серий?   -  person sari k    schedule 11.06.2015


Ответы (1)


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

С Уважением

    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);
    }
person Wolver    schedule 26.01.2013