Tüm denetimler nasıl hedeflenir (WPF Stilleri)


92

Tüm öğeler için geçerli olan bir stil belirleyebilir miyim? denedim

<Style TargetType="Control">
    <Setter Property="Margin" Value="0,5" />
</Style>

Ama hiçbir şey yapmadı

Yanıtlar:


122

StyleYalnızca hedefliyor oluşturulan Controltüretmek unsurları değil Control. Bunu x:Keyörtük olarak ayarlamadığınızda TargetType, sizin durumunuzda x:Key="{x:Type Control}".

Bir belirtmek için herhangi bir doğrudan yolu yoktur Stylekaynaklanıyor tüm unsurları hedef TargetTypearasında Style. Başka seçenekleriniz var.

Aşağıdakilere sahipseniz Style

<Style x:Key="ControlBaseStyle" TargetType="{x:Type Control}">
    <Setter Property="Margin" Value="50" />
</Style>

ButtonsÖrneğin hepsini hedefleyebilirsiniz

<Style TargetType="{x:Type Button}" BasedOn="{StaticResource ControlBaseStyle}"/>

veya stili doğrudan herhangi bir öğe üzerinde kullanın, örneğin Button

<Button Style="{StaticResource ControlBaseStyle}" ...>

Hedef tipi olan tarzımın neden FrameworkElementtüm kontrollerime uygulanmadığını merak ediyordum - bu soruyu cevapladı!
qJake

5
Sadece herkes için ortak olan bazı kökler için değil, pencereye yerleştirilen tüm kontrol türleri için stil belirlemem gerçekten o kadar boktan mı ???
Ondřej

7

Fredrik Hedblad'ın da yanıtladığı gibi, kontrolden miras kalan tüm unsurları etkileyebilirsiniz.

Ancak, örneğin aynı stile sahip metin bloğu ve düğme için stil uygulayamazsınız.

bunu yapmak için:

    <Style x:Key="DefaultStyle" TargetType="{x:Type FrameworkElement}">
        <Setter Property="Control.Margin" Value="50"/>
    </Style>
    <Style TargetType="TextBlock" BasedOn="{StaticResource DefaultStyle}"/>
    <Style TargetType="Button" BasedOn="{StaticResource DefaultStyle}"/>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.