2011-01-12 30 views
15

Bu soru muhtemelen bir kopyadır, ancak SO üzerinde bulamadım. Bunun içinde bulunanBirden çok denetime bir WPF Stili uygulama

ben vb konteyner Window, StackPanel, Grid, ben belirli bir türdeki tüm denetimlere bir Style uygulayabilirsiniz herhangi bir yolu yoktur varsa,?

Ben Container.Resources kullanarak ve bir TargetType bireysel değişiklikleri belirleyerek, mülkiyet değişiklikleri uygulayabilir, ancak hedefin Style ayar çalıştığında, ben Style ayarlayamıyor bana, bir hata alıyorum.

XAML'de bunu yapmanın bir yolu var mı?

cevap

28

Ayarlamaya çalıştığınız aralığa göre sıralama. Özellikler ortak bir temel sınıfın özellikleri ise, o zaman, yapabilirsiniz. Ayrıca stilleri miras alabileceğiniz için WPF'de Silverlight'tan daha fazla seçeneğiniz var. Örneğin ...

<Window.Resources> 
    <Style x:Key="CommonStyle" TargetType="FrameworkElement"> 
     <Setter Property="Margin" Value="2" /> 
    </Style> 
    <Style TargetType="StackPanel" BasedOn="{StaticResource CommonStyle}"> 
    </Style> 
    <Style TargetType="Grid" BasedOn="{StaticResource CommonStyle}"> 
    </Style> 
    <Style TargetType="Button" BasedOn="{StaticResource CommonStyle}"> 
     <Setter Property="Background" Value="LimeGreen" /> 
    </Style> 
</Window.Resources> 

ortak stil, CommonStyle 3 örtülü stilleri miras olacaktır. Ancak, yalnızca tüm FrameworkElement sınıfları için ortak olan özellikleri belirtebilirsiniz. BackgroundEtkinStyle ayarlanamadı çünkü FrameworkElement bir Background özelliği sağlamıyor. Bu yüzden Grid ve StackPanel'in arka planı (Panelden miras alınan) olsa da, Button'ın (Control'den alınan) sahip olduğu aynı Background özelliği değildir.

Bu, yolunuza devam etmenizi sağlar.

+0

Harika, ihtiyacım olan şey bu, Teşekkürler. – ocodo

+8

Bir stilde x: Anahtar alanı yoksa, bu türdeki * tüm * nesnelere uygulanır. Yani * hepsi * StackPanels, Izgaralar ve Düğmeler bu marjda olacak. – DefenestrationDay

+0

Teşekkür ederiz @DefenestrationDay !!! –

İlgili konular