WPF - změna v nastavení Template controlu v code behind – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

WPF - změna v nastavení Template controlu v code behind – .NET – Fórum – Programujte.comWPF - změna v nastavení Template controlu v code behind – .NET – Fórum – Programujte.com

 

Petrroll0
Stálý člen
15. 8. 2011   #1
-
0
-

Zdravím, v code behind generuji tabluku buttonů, kterým z určitých důvodů potřebuji dát šablonu Rectangle. Používám je totiž na vytvoření graficky hezké šachovnice, kde u Rectangle využívám OppacityMask a u Buttonů schopnosti být klikatelný. Pokud znáte lepší způsob s klikatelným "obrázkem" s možností změny barvy, tak sem s ním.

A teď k problému, extrahuji VisualTree z Rectangle a změním barvu pozadí, načež ho vložím jako Template Buttonu.

Button tlacitko = new Button();
ControlTemplate template = new ControlTemplate(typeof(Button));
var rectangle = new FrameworkElementFactory(typeof(Rectangle));
rectangle.SetValue(Rectangle.FillProperty, Brushes.Red);
template.VisualTree = rectangle;
tlacitko.Template = template; //TEST

Problém je, že následně již nejsem schopen property Fill změnit.

tlacitko.Template.VisualTree.SetValue(Rectangle.FillProperty, Brushes.Red); //NEFUNGUJE

Otázkou je, jak to vyřešit?

Nahlásit jako SPAM
IP: 92.62.224.–
abc
~ Anonymní uživatel
5 příspěvků
16. 8. 2011   #2
-
0
-

A kebyže využiješ len "Style" a konkrétne Trigger s Property="IsPressed" a tam nastavíš zmenu štýlu Ti nestačí? (hovorím o xaml)

Nevidím dôvod využívať Template, stačí Ti použiť Style. Veď content buttonu môže byť hocičo...

Resp. kedy chceš dosiahnuť zmenu štýlu?

Narážam na:

http://mark-dot-net.blogspot.com/…late-in.html

Stage 3: Applying some triggers

Nahlásit jako SPAM
IP: 85.216.226.–
Petrroll0
Stálý člen
16. 8. 2011   #3
-
0
-

Kokuknu na to, vypadá to jako jednodušší řešení. Díky.

Nahlásit jako SPAM
IP: 92.62.224.–
Petrroll0
Stálý člen
17. 8. 2011   #4
-
0
-

Vyřešeno, já blbej si nevšiml, že i samotnej button má v SLku Oppacity Mask.

Nahlásit jako SPAM
IP: 92.62.224.–
Petrroll0
Stálý člen
18. 8. 2011   #5
-
0
-

Ok, tak se objevil nový problém. Button sice OpacityMask má, ale jeho background vyplňuje jenom malou část na středu, takže abych dosáhl cíleného "klikatelného" obrázku, tak bych musel dávat control přibližně o 100% větší než je obrázek, což kompletně ničí vzhled.

Any ideas?

Nahlásit jako SPAM
IP: 92.62.224.–
def
~ Anonymní uživatel
2 příspěvky
19. 8. 2011   #6
-
0
-

vedel by si hodiť aspoň obrázok, čo máš na mysli (čo Ti robí) a potom čo by si chcel dosiahanuť?

(Nemáš náhodou opacityMask definovanú ako radiálnu?)

Nahlásit jako SPAM
IP: 89.173.31.–
Petrroll0
Stálý člen
19. 8. 2011   #7
-
0
-

Jednoduše řečeno, Oppacity mask má rozměr 40*10 ale aby se zobrazil celý, tak musí mít button alespoň 75x40, jinak se zančne deformovat.

BTW: Tohle je jen testovací solution, tak nedbejte na ostatní chyby.

Nahlásit jako SPAM
IP: 92.62.224.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 9 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý