Použití stylů na Formuláři   zodpovězená otázka

WPF, Silverlight

Dobrý den,

VS2010, WPF

Chtěl bych přejít z windows forms na WPF, kvůli mimo jiné možnosti použití stylů na formulářích, controlech ...

XAML moc nepoužívám, nemám to zažité. Příklady pro použití stylů jsou většinou právě v xamlu.

Pro zkoušení jsem si dal na formulář pouze jedno tlačítko a chtěl jsem si definovat vlastní styl.

Soubor s popisem stylu DefaultStyle.xaml (Resource dictionary):

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <Style x:Key="DefaultStyle" TargetType="ToggleButton">
        <Style.Resources>
            <LinearGradientBrush x:Key="BackBrush" StartPoint="0,0" EndPoint="1,1">
                <GradientStop Color="#Red" Offset="0.1"/>
                <GradientStop Color="#Yellow" Offset="0.9"/>
            </LinearGradientBrush>
        </Style.Resources>
        <Setter Property="Background" Value="{StaticResource BackBrush}"/>
    </Style>
    
</ResourceDictionary>

Dictionary spojující soubory se styly Styles.xaml

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:local="clr-namespace:HA3"
                    >

    <ResourceDictionary.MergedDictionaries>
        <!-- Defaultní styl -->
        <ResourceDictionary Source="DefaultStyle.xaml"/>
    </ResourceDictionary.MergedDictionaries>
    
</ResourceDictionary>

Jak nastavím styl (DefaultStyle) ve formuláři, případně na konkrétní control ?

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

Na toto myslím není nutné zakládat nový topic.na netu je hintů milion..Musíte na controlu nastavit atribut style.

Style={StaticResource název_stylu}

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

Ano toto jsem právě zkoušel,

StaticResource název_stylu mi to nebere,

Nejsem si jistý, ale někde se musí říct nebo namapovat kde ty resource jsou. To mi nejde.

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

V souboru definující styly musíte mít daný styl otagovaný x:Name.Pomocí něhož se poté na styl odkazujete,dále je potřeba nastavit TargetType na control,který bude styl aplikovat (např.Button,DataGrid,..)

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

To jsem měl, viz. ukázka.

styly mi to nebralo protože jsem je neměl umístěné v app.xaml v <Application.Resources>.

Pokud je vypíšu tam tak pro celou aplikaci fungují.

Ještě bych, ale potřeboval jak do tagu <Application.Resources>

umístím odkaz na jiný soubor, ve kterém bych chtěl mít styly uložené.

Něco jako ApplicationResources.MergedDictionaries ...

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

Taková blbost a že mi trvala :-)

    <Application.Resources>
       
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="Style\DefaultStyle.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
       

    </Application.Resources>
nahlásit spamnahlásit spam 0 odpovědětodpovědět

Předpokládal jsem,že toto již máte v App.Xaml nadefinované,viz.část kódu v zadání topicu.Asi jsem Vás špatně pochopil :-)

Je samozřejmě třeba deklarativně nastavit kde se mají brát potřebné styl resource soubory,pokud tedy nejsou styly definovány přímo v komponentě nebo v samotném App.xaml.

nahlásit spamnahlásit spam 1 / 1 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