WPF live chart op tabconbtrol en dataclick event.

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • MasterTweaker
  • Registratie: Maart 2010
  • Laatst online: 12-09 18:01
Ik heb een beetje een hardnekkig probleempje met een WPF live chart (https://lvcharts.net/) op een tabcontrol (C# en WPF)
Ik heb dus een piechart waaraan een dataclick event gekoppeld zit waarin vervolgens de volgende code aangeroepen wordt:
tabControlMain.SelectedIndex = 0;
tCRoutes.SelectedIndex = 0;

ChartCat.Focusable = false;
De piechart bevind zich op tabControlMainIndex = 1 en nadat de gebruiker geklikt heeft op de piechart wil ik dat deze doorgeschakeld wordt naar tabControlMainIndex = 0 (een ander tabItem) echter dit werkt gewoon niet. Na de event wordt WPF live chart opnieuw geladen en kom ik altijd weer uit op de tabControlSelectedIndex = 1.

Wat ik al geprobeerd heb:
- De focus leggen op een andere control dan de WPF live chart.
- De WPF live chart focusable propertie op false zetten.
- Voorkomen dat de WPF live chart opnieuw geladen wordt bij een dataclick (dit is volgens mij niet mogelijk)
- De code waarin je van tabcontrol wisselt in een Chart afterload event zetten, echter ik kan een dergelijke event niet vinden.

Rare toestanden dus. Iemand een suggestie waar dit aan kan liggen en hoe ik dit kan oplossen?
Misschien is wat ik wil gewoon niet mogelijk? :o


...

Alle reacties


Acties:
  • 0 Henk 'm!

  • eheijnen
  • Registratie: Juli 2008
  • Niet online
Als je in de eventhandler routine eens een messagebox.show uitvoert kun je zien of deze ook geactiveert wordt.

Of eventueel eens een button op je tabblad met de chart zetten die dezelfde code uitvoert als het dataclick event, om de werking te controleren. Die zou dan terug moeten schakelen naar tabindex 0

Wie du mir, so ich dir.


Acties:
  • 0 Henk 'm!

  • MasterTweaker
  • Registratie: Maart 2010
  • Laatst online: 12-09 18:01
eheijnen schreef op zaterdag 27 juni 2020 @ 09:22:
Als je in de eventhandler routine eens een messagebox.show uitvoert kun je zien of deze ook geactiveert wordt.

Of eventueel eens een button op je tabblad met de chart zetten die dezelfde code uitvoert als het dataclick event, om de werking te controleren. Die zou dan terug moeten schakelen naar tabindex 0
De Messagebox wordt getoond en dan zie ik ook dat deze getoond wordt op tabcontrol index = 0 , maar als je de MessageBox dan wegklikt gaat hij toch weer door naar tabcontrol index = 1.

Met een button (op dezelfde plek als de Chart) en dezelfde code als in de dataclick event gaat het wel goed. Dan gaat hij correct naar tabcontrol index = 0.

Het heeft echt te maken met de dataclick event van de WPF live chart en dat de chart zich weer herlaadt.
Iemand nog een idee?

Acties:
  • 0 Henk 'm!

  • eheijnen
  • Registratie: Juli 2008
  • Niet online
Een simpele test met een statische reeks (serie) data werkt hier gewoon.
Kan niet anders zijn dan dat er nog meer code wordt uitgevoerd dan dat wat je hier aanhaalt.
Kijk eens of er nog meer/andere events zijn die je hebt gekoppelt.

Wie du mir, so ich dir.


Acties:
  • 0 Henk 'm!

  • MasterTweaker
  • Registratie: Maart 2010
  • Laatst online: 12-09 18:01
Het was op te lossen met de TabControl selectionChanged event.
Ik gebruik nu een boolean om te bepalen of de WPF chart aangeklikt is en als die dan weer terug wil naar zijn eigen tabblad dan schakel ik hem alsnog door naar het eerste tabblad.
if (tabItemMyStats.IsSelected)
{
if (chartCatClicked == true)
{
tabControlMain.SelectedIndex = 0;
}
....
Ja sommige controls hebben een sterke eigen wil en dat moet je dan maar zo aanpakken.
Voorlopig dus zo opgelost. Bedankt voor de bijdrages.