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

  • 2ndfloor91

    2ndfloor91

    17 Kasım 2007
  • FF Radio

    FF Radio

    16 Mayıs 2008
  • TheMasterOfHell100

    TheMasterOfH

    13 AĞUSTOS 2011