using System; using System.Windows; using LiveCharts; using LiveCharts.Defaults; using LiveCharts.Wpf; using Matrix; namespace MatrixXAMLOnly { /// /// Логика взаимодействия для DiagramWindow.xaml /// public partial class DiagramWindow : Window { MyMatrix matrix; public SeriesCollection SeriesCollection { get; set; } public Func PointLabel { get; set; } public DiagramWindow(MyMatrix matrix) { InitializeComponent(); this.matrix = matrix; SeriesCollection = new SeriesCollection(); ComboBoxOrientation.SelectedIndex = 0; PointLabel = chartPoint => string.Format("{0} ({1:P})", chartPoint.Y, chartPoint.Participation); DataContext = this; } private void BtnCreateDiagram_Click(object sender, RoutedEventArgs e) { SeriesCollection.Clear(); int num; try { num = Convert.ToInt32(TextBoxNum.Text) - 1; } catch { MessageBox.Show("Проверьте правильность введенных данных!"); return; } if (ComboBoxOrientation.SelectedIndex == 0) { if (num + 1 < 1 || num + 1 > matrix.Rows) { MessageBox.Show("Указанное число превышает размерность матрицы!"); return; } for (int i = 0; i < matrix.Columns; i++) { SeriesCollection.Add(new PieSeries { Title = $"№{i + 1}", Values = new ChartValues { new ObservableValue(matrix.data[num, i]) }, DataLabels = true }); } } else { if (num + 1 < 1 || num + 1 > matrix.Columns) { MessageBox.Show("Указанное число превышает размерность матрицы!"); return; } for (int i = 0; i < matrix.Rows; i++) { SeriesCollection.Add(new PieSeries { Title = $"№{i + 1}", Values = new ChartValues { new ObservableValue(matrix.data[i, num]) }, DataLabels = true }); } } } } }