SORU
19 AĞUSTOS 2008, Salı


Nasıl WPF birden fazla stilleri uygulamak için

WPF, nasıl FrameworkElement birden fazla stilleri uygulamak istiyorsunuz? Örneğin, zaten bir tarzı olan bir denetim var. Ben de ilk esen olmadan eklemek istediğim ayrı bir tarzı var. Stilleri sadece diğer bir uzatamıyorum çok farklı TargetTypes.

CEVAP
3 EKİM 2008, Cuma


Basit bir cevap yapmak için ne çalışıyorsunuz (en azından tarayıcısı üzerinden bu sürüm) yapamazsın bence.

Bu, belirli herhangi bir öğe için tek bir Stil uygulanabilir.

Diğerleri yukarıda belirtildiği gibi, ancak, belki de BasedOn size yardım etmek için kullanabilirsiniz. Gevşek xaml aşağıdaki parça göz atın. Bunun için iki stilleri uygulamak istiyorum bu elemanın temel sınıf üzerinde var olan bir özelliği belirleyen temel bir tarzı var. Ve temel tarzı dayalı olan ikinci tarzı, başka bir özellik kurdum.

Yani buradaki fikir ... eğer bir şekilde ayrı özelliklerini ayarlamak istediğiniz ... göre miras hiyerarşisi unsuru ayarlamak istediğiniz birden fazla stil ... belki senin de geçici bir çözüm.

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Page.Resources>
        <Style x:Key="baseStyle" TargetType="FrameworkElement">
            <Setter Property="HorizontalAlignment" Value="Left"/>
        </Style>
        <Style TargetType="Button" BasedOn="{StaticResource baseStyle}">
            <Setter Property="Content" Value="Hello World"/>
        </Style>
    </Page.Resources>
    <Grid>
        <Button Width="200" Height="50"/>
    </Grid>
</Page>


Bu yardımcı olur umarım.

Not:

Not için özellikle bir şey. Eğer ButtonBase, ikinci tarzı TargetType (xaml ilk set yukarıda) değiştirirseniz iki Stiller alamadım. Ancak, bu kısıtlamayı aşmak için aşağıdaki xaml atın. Temel olarak, bu Tarz bir anahtar verir ve bu anahtar ile referans vermek gerekir.

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Page.Resources>
        <Style x:Key="baseStyle" TargetType="FrameworkElement">
            <Setter Property="HorizontalAlignment" Value="Left"/>
        </Style>
        <Style x:Key="derivedStyle" TargetType="ButtonBase" BasedOn="{StaticResource baseStyle}">
            <Setter Property="Content" Value="Hello World"/>
        </Style>
    </Page.Resources>
    <Grid>
        <Button Width="200" Height="50" Style="{StaticResource derivedStyle}"/>
    </Grid>
</Page>

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Matthew Pearce

    Matthew Pear

    9 AĞUSTOS 2009
  • Maya Learning Channel

    Maya Learnin

    23 HAZİRAN 2010
  • mist64

    mist64

    30 Mayıs 2006