WPF - jak na triggery   zodpovězená otázka

WPF

Zdravím, snažím se naučit pracovat ve WPF, protože tam jde vytvořit celkem zajímavé uživatelské prostředí a v současné době jsem se zasekl na mrtvém bodě.

Zkouším vytvořit jednuchou aplikaci-stopky. Mám hlavní okno na kterém jsou mimo jiné buttony kterými se aplikace nastavuje. Chtěl bych docílit toho, že buttony budou schované a zobrazí se pouze ve chvíli kdy uživatel najede myší na okno. Myslel jsem si že to půjde jednoduše tak, že použiju eventtrigger který odchytí událost IsMouseOver hlavného okna. Bohužel ale nevím jak bych měl určit jako target buttony (u kterých navíc používám šablony).

A měl bych ještě jednu otázku. Ve stylu buttonu mám definovaný trigger který mění barvu jeho pozadí při najeti myši:

            <Style.Triggers>
                <!--najetí myši na tlačítko-->
                <Trigger Property="Button.IsMouseOver" Value="True">
                    <Setter Property="Button.Background" Value="Gray"/>
                </Trigger>
            </Style.Triggers>

to funguje ok, ale já bych chtěl u pozadí tlačítka nastavit prolínání barev, což vypadá nějak takto:

            <Button.Background>
                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                    <GradientStop Color="#FF101010" Offset="0.216" />
                    <GradientStop Color="Black" Offset="1" />
                    <GradientStop Color="#FFDEDEDE" Offset="0.533" />
                </LinearGradientBrush>
            </Button.Background>

Bohužel se mi ani po době googlení a experimentování nepodařilo přijít na to, jak property složenou z více hodnot nacpat do setteru kde je pouze jedna vlastnost value.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Takhle

<Setter ...>
    <Setter.Value>
                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                    <GradientStop Color="#FF101010" Offset="0.216" />
                    <GradientStop Color="Black" Offset="1" />
                    <GradientStop Color="#FFDEDEDE" Offset="0.533" />
                </LinearGradientBrush>
    </Setter.Value>
</Setter>

Hodnotu vlastnosti objektu lze nastavit buď přes XML atribut, tj. <Setter Value="blabla" />, pokud je to jednoduchý datový typ, např. string nebo integer. Pokud to má být složitější objekt, je třeba vlastnost nastavit pomocí vnitřního elementu xxx.yyy, kde xxx je název rodičovského elementu a yyy název vlastnosti, tedy třeba Setter.Value nebo Button.Background.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Děkuji, to je přesně ono:)

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback