WPF Einige Stile, die nicht auf DataTemplate-Steuerelemente angewendet werden

Ich versuche etwas über WPF zu lernen und ich bin ziemlich erstaunt über seine Flexibilität.

Ich habe jedoch ein Problem mit getroffenStyles undDataTemplates, was ein bisschen verwirrend ist. Ich habe unten die Testseite definiert, um ein bisschen mit Styles usw. herumzuspielen und festgestellt, dass dieStyles definiert in<Page.Resources> zumBorder undTextBlock werden in der nicht angewendetDataTemplate, aberStyle zumProgressBar genau so definiert wird angewendet.

Quellcode (ich benutze nur Kaxaml und XamlPadX, um das Ergebnis zu sehen)

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

  <Page.Resources>

    <Style TargetType="{x:Type Border}">
      <Setter Property="Background" Value="SkyBlue"/>
      <Setter Property="BorderBrush" Value="Black"/>
      <Setter Property="BorderThickne,ss" Value="2"/>
      <Setter Property="CornerRadius" Value="5"/>
    </Style>

    <Style TargetType="{x:Type TextBlock}">
      <Setter Property="FontWeight" Value="Bold"/>
    </Style>

    <Style TargetType="{x:Type ProgressBar}">
      <Setter Property="Height" Value="10"/>
      <Setter Property="Width" Value="100"/>
      <Setter Property="Foreground" Value="Red"/>
    </Style>

    <XmlDataProvider x:Key="TestData" XPath="/TestData">
      <x:XData>
        <TestData xmlns="">
          <TestElement>
            <Name>Item 1</Name>
            <Value>25</Value>
          </TestElement>
          <TestElement>
            <Name>Item 2</Name>
            <Value>50</Value>
          </TestElement>
        </TestData>
      </x:XData>
    </XmlDataProvider>

    <HierarchicalDataTemplate DataType="TestElement">
      <Border Height="45" Width="120" Margin="5,5">
        <StackPanel Orientation="Vertical" Margin="5,5" VerticalAlignment="Center" HorizontalAlignment="Center">
          <TextBlock HorizontalAlignment="Center" Text="{Binding XPath=Name}"/>
          <ProgressBar Value="{Binding XPath=Value}"/>
        </StackPanel>
      </Border>
    </HierarchicalDataTemplate>

  </Page.Resources>

  <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
    <StackPanel Orientation="Vertical" VerticalAlignment="Center">
      <Border Height="45" Width="120" Margin="5,5">
        <StackPanel Orientation="Vertical" VerticalAlignment="Center" HorizontalAlignment="Center">
          <TextBlock HorizontalAlignment="Center" Text="Item 1"/>
          <ProgressBar Value="25"/>
        </StackPanel>
      </Border>
      <Border Height="45" Width="120" Margin="5,5">
        <StackPanel Orientation="Vertical" VerticalAlignment="Center" HorizontalAlignment="Center">
          <TextBlock HorizontalAlignment="Center" Text="Item 2"/>
          <ProgressBar Value="50"/>
        </StackPanel>
      </Border>
    </StackPanel>
    <ListBox Margin="10,10"  Width="140" ItemsSource="{Binding Source={StaticResource TestData}, XPath=TestElement}"/>
  </StackPanel>
</Page>

Ich vermute, es hat etwas mit Standardstilen usw. zu tun, aber mehr Rätsel ist, warum einigeStyles werden angewendet und manche nicht. Ich finde nirgendwo eine einfache Erklärung für das oben Genannte und möchte daher fragen, ob jemand so freundlich wäre, dieses Verhalten in Lamens-Begriffen mit möglichen Links zur technischen Beschreibung, d. H. Zu MSDN oder so, zu erklären.

Vielen Dank im Voraus für Ihre Unterstützung!

Antworten auf die Frage(4)

Ihre Antwort auf die Frage