WPF effecten via C# code, niet via XAML

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo allemaal,

Ik vroeg mij af of het mogelijk is om de WPF effecten (zoals bijv. het OuterGlowBitmapEffect) via de C# code te verkrijgen, in plaats van het direct in XAML inkloppen.

Mijn gedachte hierachter is dat ik zelf heb leren programmeren voordat er echt sprake was van WPF, de 'oude' Windows Forms dus. Ik heb begrepen dat Windows Forms inmiddels een beetje de tweede rang krijgen, waarbij WPF de eerste plaatst toebedeeld krijgt. Ik ben mij dus gaan verdiepen in XAML, maar mijn kennis tot nu toe is niet groot genoeg om iets geavanceerdere technieken te programmeren.

Waar ik uiteindelijk heen wil, is dat knoppen dit glow effect krijgen indien ik er met de mouse overheen ga, of er op klik (welke van de twee opties is op dit moment nog niet bekend, maar zou in principe niet zo veel uit moeten maken).

Ik heb tot nu toe een aantal voorbeeldjes gevonden hoe je dit effect kan verkrijgen. Het probleem is alleen dat dit allemaal nogal hardcoded XAML is; zie bijv. deze link: http://www.tanguay.info/w...php?pg=codeExamples&id=27)

Ik loop hierbij echter tegen een aantal beperkingen op. Stel dat ik bijv. wil dat dit effect alleen optreedt als aan een bepaalde conditie voldaan wordt (bijv. alleen het effect bij mouse over indien een bepaalde checkbox aangevinkt staat), dan is dat volgens mij erg lastig te realiseren door middel van hardcoded XAML.

Ik ben dan ook op zoek naar de daadwerkelijke C# methoden en properties hierachter. Ik heb tot nu toe een voorbeeld gevonden waarbij een van de effecten wordt geprogrammeerd via de C# code zelf. De link: http://blogs.msdn.com/wpf...dows-outer-glows-etc.aspx
Echter: het gaat hier om een shadow effect voor een knop; ik ben juist op zoek naar een glow effect. De stappen reproduceren aan de hand van het voorbeeld, levert helaas geen positief resultaat op.

Mijn vraag is dan ook: weten jullie een voorbeeld waarbij ik in C# code dit glow effect kan toevoegen aan bijv. een button, zodat er met afhankelijkheden gewerkt kan worden?

Om hier nog even snel op terug te komen: hetzelfde geld voor de doorzichtigheid van bijv. een window en de buttons, om dat leuke glasachtige effect te krijgen; is dit ook via C# code te realiseren? Weer zijn er tig voorbeelden van XAML te vinden, maar niets van C# code zelf...

[ Voor 6% gewijzigd door Verwijderd op 16-02-2010 11:06 . Reden: Toevoeging extra informatie ]


Acties:
  • 0 Henk 'm!

  • BM
  • Registratie: September 2001
  • Laatst online: 23:53

BM

Moderator Spielerij
Verwijderd schreef op dinsdag 16 februari 2010 @ 11:04:
Ik loop hierbij echter tegen een aantal beperkingen op. Stel dat ik bijv. wil dat dit effect alleen optreedt als aan een bepaalde conditie voldaan wordt (bijv. alleen het effect bij mouse over indien een bepaalde checkbox aangevinkt staat), dan is dat volgens mij erg lastig te realiseren door middel van hardcoded XAML.
Ik ben to-taal geen WPF expert (weet er akelig weinig van), maar was het niet juist heel simpel om dat soort dingen te doen in XAML? Volgens mij is het niet heel moeilijk om bepaalde bindings/effecten aan bepaalde voorwaarden te koppelen.

Xbox
Even the dark has a silver lining | I'm all you can imagine times infinity, times three


Acties:
  • 0 Henk 'm!

  • CodeIT
  • Registratie: Juni 2002
  • Laatst online: 15-09 21:49

CodeIT

Code IT

Ik loop hierbij echter tegen een aantal beperkingen op. Stel dat ik bijv. wil dat dit effect alleen optreedt als aan een bepaalde conditie voldaan wordt (bijv. alleen het effect bij mouse over indien een bepaalde checkbox aangevinkt staat), dan is dat volgens mij erg lastig te realiseren door middel van hardcoded XAML.
Dat is heel goed te doen in XAML (bijvoorbeeld door de visibility of opacity property te binden aan de isChecked property van je checkbox). Ik denk dat je eens een paar goede tutorials/boeken moet lezen hierover. Het is juist handig om dit in XAML te doen dan in code. Als je met Blend werkt gaat het nog een heel stuk sneller, en visueler ook.

In deze link: http://msdn.microsoft.com...uterglowbitmapeffect.aspx wordt een outerglowbitmapeffect toegevoegd aan een textbox (in XAML en in code).
Om hier nog even snel op terug te komen: hetzelfde geld voor de doorzichtigheid van bijv. een window en de buttons, om dat leuke glasachtige effect te krijgen; is dit ook via C# code te realiseren? Weer zijn er tig voorbeelden van XAML te vinden, maar niets van C# code zelf...
Dat is ook in code te realiseren ja. Ik prefereer de methode met API calls. Dan ziet het er op een Vista/Win7 goed uit, terwijl een XP gebruiker de 'oude' interface ziet. Om het via de dwmapi te laten zien kun je hier: http://blogs.msdn.com/ada...ve/2006/05/04/589686.aspx het een en ander lezen.

[ Voor 38% gewijzigd door CodeIT op 16-02-2010 11:21 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
CodeIT schreef op dinsdag 16 februari 2010 @ 11:12:
Dat is heel goed te doen in XAML (bijvoorbeeld door de visibility of opacity property te binden aan de isChecked property van je checkbox). Ik denk dat je eens een paar goede tutorials/boeken moet lezen hierover. Het is juist handig om dit in XAML te doen dan in code. Als je met Blend werkt gaat het nog een heel stuk sneller, en visueler ook.
Ik heb me inderdaad verdiept in Blend, maar ik loop steeds tegen het probleem aan dat events nogal lastig te koppelen zijn aan bijv. de button. Je kunt dan bijv. een actie recorden, maar op dat moment snap ik er helaas weinig meer van.
Ook de isChecked property via XAML laten verlopen, is qua kennis van XAML helaas boven mijn pet. Ik ben inderdaad op zoek gegaan naar een paar goede boeken over XAML! Tot die tijd probeer ik dus het meeste via de C# code te laten verlopen, wat in mijn ogen niet zo'n groot probleem zou moeten zijn. Immers: zowel via XAML als via de C# code zelf zou je in staat moeten zijn om de properties van de effecten aan te moeten roepen, zoals inderdaad ook uit de door jou gegeven links blijkt.
Dat is ook in code te realiseren ja. Ik prefereer de methode met API calls. Dan ziet het er op een Vista/Win7 goed uit, terwijl een XP gebruiker de 'oude' interface ziet. Om het via de dwmapi te laten zien kun je hier: http://blogs.msdn.com/ada...ve/2006/05/04/589686.aspx het een en ander lezen.
Ah, dit is echt een mooie suggestie!! Ik zoek al de hele ochtend naar iets dergelijks, dank je wel!

Acties:
  • 0 Henk 'm!

  • urk_forever
  • Registratie: Juni 2001
  • Laatst online: 16:40
Verwijderd schreef op dinsdag 16 februari 2010 @ 11:38:
[...]


Ik heb me inderdaad verdiept in Blend, maar ik loop steeds tegen het probleem aan dat events nogal lastig te koppelen zijn aan bijv. de button. Je kunt dan bijv. een actie recorden, maar op dat moment snap ik er helaas weinig meer van.
Ook de isChecked property via XAML laten verlopen, is qua kennis van XAML helaas boven mijn pet. Ik ben inderdaad op zoek gegaan naar een paar goede boeken over XAML! Tot die tijd probeer ik dus het meeste via de C# code te laten verlopen, wat in mijn ogen niet zo'n groot probleem zou moeten zijn. Immers: zowel via XAML als via de C# code zelf zou je in staat moeten zijn om de properties van de effecten aan te moeten roepen, zoals inderdaad ook uit de door jou gegeven links blijkt.


[...]


Ah, dit is echt een mooie suggestie!! Ik zoek al de hele ochtend naar iets dergelijks, dank je wel!
De bedoeling van WPF, tenminste voor zover ik het begrepen heb, is dat in WPF de opmaak en de daadwerkelijke code van elkaar gescheiden worden en dat het soort effecten wat jij wilt bereiken dus het beste via XAML gerealiseerd kunnen worden. Hier kan je natuurlijk van afwijken.

Voor het probleem wat je in je TS beschrijft zou je bijvoorbeeld een trigger met een animation kunnen gebruiken. Hier een voorbeeldje.

Hail to the king baby!