5 Stimmen

Ich kann die Schriftgröße für Listview-Elemente oder Spaltenüberschriften nicht ändern

    <ListView x:Name="lstProductionOrders">
         <ListView.View>
              <GridView>
                   <GridViewColumn Header="Production Order:"/>
                        ...

Ich habe die Schriftgröße auf dem Raster festgelegt, mit Textelement, ich habe es auf der listview, die Spaltenüberschrift, durch Stile, durch Stile mit BasedOn festgelegt. Ich habe sogar ein brandneues Testfenster eingefügt, das keinen anderen Code enthielt als den Standardcode und eine Listenansicht, die auf dieselbe Weise wie oben erstellt wurde. Mit all den oben genannten, die Schriftart ändert sich in Design-Zeit, aber nicht in der Laufzeit.

Ich habe nur etwa 6 Monate WPF/XAML Erfahrung, so kann ich für die falsche Sache zu suchen. Gibt es irgendeine Art von globalen Einstellung für Schriftgröße oder irgendetwas, das jemand denken kann, dass dies verursacht werden würde, um außer Kraft gesetzt werden.

Für das Protokoll, ich mit dem Testfenster, gibt es keine Basisklassen.

----------EDIT----------

Dies war die Ursache für das Problem in App. xaml

<Style TargetType="TextBlock">
        <Setter Property="FontFamily" Value="Times New Roman"/>
        <Setter Property="FontSize" Value="20"/>
</Style>

6voto

Louis Kottmann Punkte 15637

Das hört sich sehr danach an, dass Sie einen impliziten Stil für GridViewColumn haben, der die von Ihnen lokal vorgenommenen Änderungen überschreibt.

Zur Entwurfszeit wird dieser implizite Stil nicht berücksichtigt (aus verschiedenen Gründen), aber zur Laufzeit schon, und es kommt zu diesem seltsamen Verhalten.

Ich würde damit beginnen, den Abschnitt "Ressourcen" von App.xaml zu untersuchen, und mich dann nach oben bewegen, bis ich das Steuerelement erreiche, das mich interessiert.

Zusatz: implizite Stile:

<UserControl>
   <UserControl.Resources>
      <Style TargetType="TextBlock">
         <Setter Property="FontSize" Value="40" /> <!-- stupid value, just to make it obvious it changed something =) -->
      </Style>
   </UserControl.Resources>
</UserControl>

Wenn Sie einen impliziten Stil lokal definieren wollen, ohne einen anderen impliziten Stil, der weiter oben in der Kette steht, zu überschreiben, können Sie dies tun:

<UserControl>
   <UserControl.Resources>
      <Style TargetType="TextBlock" BasedOn="{StaticResource {x:Type TextBlock}}">
         <Setter Property="FontSize" Value="60" /> <!-- ridiculous value, just to make it obvious it changed something =) -->
      </Style>
   </UserControl.Resources>
</UserControl>

Es erbt den impliziten Stil an Ort und Stelle und fügt Änderungen für das lokale UserControl hinzu.

5voto

H.B. Punkte 140726

Bei mir funktioniert das Folgende sowohl für den Kopf als auch für die Positionen:

<ListView ItemsSource="{Binding Source={StaticResource Items}}"
          TextElement.FontSize="16">
    <!-- ... -->

Ich habe allerdings keine Ahnung, was in Ihrem Fall falsch sein könnte...

1voto

punker76 Punkte 13971

Wenn Sie nur die Größe der Kopfzeile einstellen wollen, versuchen Sie diese Lösung oder verwenden Sie die Lösung von @H.B.

<ListView x:Name="lstProductionOrders" >
    <ListView.View>
        <GridView>
            <GridViewColumn>
                <GridViewColumnHeader TextElement.FontSize="16">Production Order:/GridViewColumnHeader>
            </GridViewColumn>
        </GridView>
    </ListView.View>
</ListView>

enter image description here

Ich hoffe, das hilft

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X