LiveCharts w WPF

Michał Warmuz
  • Rejestracja:około 6 lat
  • Ostatnio:ponad 3 lata
  • Postów:253
0

Cześć staram się dodać wykres do alikacji WPF ale mam bład że żadne dane się nie pokazuje a debuguje i włąsciwości mają prawidłowe dane.

XAML:

Kopiuj
        <lvc:CartesianChart>
            <lvc:CartesianChart.Series>
                <lvc:VerticalLineSeries Title="Wynik finansowy" Values="{Binding Path=Series}"/>
            </lvc:CartesianChart.Series>
            <lvc:CartesianChart.AxisX>
                <lvc:Axis Title="Miesiąc" Labels="{Binding Path=Months}">
                    <lvc:Axis.Separator>
                        <lvc:Separator Step="1"/>
                    </lvc:Axis.Separator>
                </lvc:Axis>
            </lvc:CartesianChart.AxisX>
            <lvc:CartesianChart.AxisY>
                <lvc:Axis Title="Kwota"/>
            </lvc:CartesianChart.AxisY>
        </lvc:CartesianChart>

ViewModel:

Kopiuj
    public class CompanyStaticViewModel : ObservableObject
    {
        private readonly IEventAggregator eventAggregator;
        private readonly IResponseService responseService;

        public CompanyStaticViewModel(IEventAggregator _eventAggregator, IResponseService _responseService)
        {
            eventAggregator = _eventAggregator;
            responseService = _responseService;

            Load();


        }


        private ChartValues<decimal> _sumFinancialResult;
        public ChartValues<decimal> SumFinancialResult
        {
            get
            {
                return _sumFinancialResult;
            }
            private set
            {
                _sumFinancialResult = value;
                OnPropertyChanged(ref _sumFinancialResult, value);
            }
        }

        public SeriesCollection Series { get; set; }

        public List<string> Months { get; set; }


        public async void Load()
        {
            var result = await responseService.GetAll<CompanyFinancialResultModel>("Company/GetFinancialResult");

            SumFinancialResult = new ChartValues<decimal>(result.Select(x=>x.Sum));

            Months = result.Select(x => x.Date).ToList();

            Series = new SeriesCollection
            {
                new ColumnSeries
                {
                    Title = "Wynik finansowy",
                    Values = SumFinancialResult
                }
            };
        }

    }

Co robię źle ? :)

chalwa
Sprawdzałeś logi z bindingu?
Michał Warmuz
@chalwa: A jak mogę tosprawdzić ? :)
chalwa
właśnie @obscurity podesłał Ci linka jak to ogarnąć. Bardzo przydatna funkcja.
obscurity
  • Rejestracja:około 6 lat
  • Ostatnio:3 minuty
2

OnPropertyChanged jest Ci potrzebny na Months i Series bo do nich się przypinasz. Nie jest natomiast potrzebny na SumFinancialResult więc masz wszystko dosłownie odwrotnie


"A car won't take your job, another horse driving a car will." - Horse influencer, 1910
edytowany 1x, ostatnio: obscurity
Michał Warmuz
kurcze nie pomogło :/
obscurity
no to musisz debugować. W pierwszej kolejności sprawdź "debug output", włącz logowanie błędów bindingu https://spin.atomicobject.com/2013/12/11/wpf-data-binding-debug/ , sprawdź czy działa w wersji synchronicznej, zasubskrybuj się do eventa NotifyPropertyChanged i zobacz czy przychodzi właściwa nazwa propertiesa
Michał Warmuz
Dzięki wiem co było przyczyna tworzyłem new ColumnSeries a w moim przypadku powinno być new LineSeries :D
Michał Warmuz
@obscurity Dzięki bardzo przydatna funkcja dziękuje :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.