Элементы управления диаграммами предназначены для представления данных, которые были обработаны и агрегированы и готовы к представлению.
Похоже, вы хотите, чтобы PieSeries представлял серию, содержащую категории "VotedYes", "VotedNo", «Воздержался» и «Не голосовал» как его независимая ценность, а подсчет голосов - как зависимая.В этом случае вам нужно передать в ItemsSource коллекцию, содержащую этот набор данных, один объект не подойдет.
Вам нужно будет передать объект VoteResult через функцию, которая возвращает что-то вроде IEnumerable<KeyValuePair<String, Int32>>
.
public IEnumerable<KeyValuePair<String, Int32>> ProcessVoteResult(VoteResult vr)
{
yield return new KeyValuePair<String, In232>("Voted Yes", vr.VotedYes);
yield return new KeyValuePair<String, In232>("Voted No", vr.VotedNo);
yield return new KeyValuePair<String, In232>("Abstained", vr.Abstained);
yield return new KeyValuePair<String, In232>("Did Not Vote ", vr.DidntVote );
}
Теперь вы, вероятно, захотите связать VoteResult
, так как вы, похоже, используете MVVM (из ваших других вопросов).Вам понадобится конвертер значений: -
public class VoteResultToEnumerableConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value != null)
{
return ProcessVoteResult((VoteResult)value);
}
return null;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
Тогда этот конвертер будет находиться в статических ресурсах где-то над диаграммой: -
<local:VoteResultToEnumerableConverter x:Key="vrconv" />
Тогда ваша диаграмма будет выглядеть следующим образом:-
<toolkit:Chart>
<toolkit:PieSeries
ItemsSource="{Binding SomeVoteResult, Converter={StaticResource vrconv}}"
DependentValuePath="Key"
IndependendValuePath="Value"/>
</toolkit:Chart>