Я довольно новичок в разработке С#. Я пытаюсь создать простую круговую диаграмму, используя Visual Studio, С# и расширенный набор инструментов WPF. Следующий код является частью dll, которую я пытаюсь создать (подключается к Revit). Я установил расширенный набор инструментов WPF с помощью NuGet. Я не смог найти никакого учебника или примеров, поэтому я попытался разместить код из некоторых фрагментов, которые я нашел в разных онлайн-источниках. На данный момент у меня есть
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
<Grid Grid.Row="1">
<xctk:Pie x:Name="foobar"
DataContext="{Binding PieCollection, UpdateSourceTrigger=PropertyChanged}" >
</xctk:Pie>
</Grid>
и
public class PiePoint
{
public string Name { get; set; }
public Int16 Share { get; set; }
}
public class CompareToMultiLODViewModel : INotifyPropertyChanged
{
private ObservableCollection<PiePoint> _pieCollection;
public ObservableCollection<PiePoint> PieCollection
{
get { return _pieCollection; }
set { _pieCollection = value; OnPropertyChanged("PieCollection"); }
}
public CompareToMultiLODViewModel()
{
CompareToMultiLODBtnCommand = new MRCommand(this);
PieCollection = new ObservableCollection<PiePoint>();
PieCollection.Add(new PiePoint { Name = "Mango", Share = 10 });
PieCollection.Add(new PiePoint { Name = "Banana", Share = 36 });
}
private PropertyChangedEventHandler _PropertyChanged;
event PropertyChangedEventHandler INotifyPropertyChanged.PropertyChanged
{
add
{
//((INotifyPropertyChanged)PieCollection).PropertyChanged += value;
_PropertyChanged += value;
}
remove
{
//((INotifyPropertyChanged)PieCollection).PropertyChanged -= value;
_PropertyChanged -= value;
}
}
private void OnPropertyChanged(string PropertyName)
{
_PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(PropertyName));
}
Код позади xaml
public partial class CompareToMultiLOD : Page
{
public CompareToMultiLOD()
{
InitializeComponent();
DataContext = new CompareToMultiLODViewModel();
}
Я не знаю, актуально ли это, но при отладке я вижу, что DataContext назначается до создания PieCollection, а затем OnPropertyChanged запускается один раз при инициализации PieCollection. PropertyChanged, кажется, запускается один раз (чего я не понимаю, так как я добавляю два значения).
Я не уверен, что ViewModel - это подходящее место для хранения данных, которые использует круговая диаграмма, но я поместил их туда временно (поскольку это, очевидно, фиктивный класс).
На данный момент я просто хотел бы заставить его работать. Любая помощь приветствуется!