2011-12-09 5 views
5
<ListView x:Name="lstProductionOrders"> 
     <ListView.View> 
       <GridView> 
        <GridViewColumn Header="Production Order:"/> 
         ... 

Ho impostato il fontsize sulla griglia di partenza, utilizzando TextElement, ho impostato sul ListView, il ColumnHeader, attraverso gli stili, attraverso gli stili utilizzando Basato su. Ho persino inserito una nuovissima finestra di test che non conteneva altro codice ma il codice predefinito e un listview creati allo stesso modo sopra. Usando tutto quanto sopra, il carattere cambia in fase di progettazione ma non in fase di esecuzione.Non posso cambiare la grandezza scrittura su oggetti Listview o intestazioni delle colonne

Ho solo circa 6 mesi di esperienza WPF/XAML, quindi potrei cercare la cosa sbagliata. Esiste una sorta di impostazione globale per la fontsize o qualsiasi cosa a cui chiunque possa pensare che causerebbe la sua sovrascrittura.

Per la cronologia, io con la finestra di test, non ci sono classi di base.

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

Questa è stata la fonte del problema in App. XAML

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

risposta

5

questo suona un po 'come si dispone di uno stile implicito per GridViewColumn che sovrascrive le modifiche apportate a livello locale.

In fase di progettazione, questo stile implicito non viene preso in considerazione (potrebbe essere per vari motivi), ma in fase di esecuzione lo è, e si ottiene uno strano comportamento.

Vorrei iniziare esaminando la sezione Risorse di App.xaml, quindi spostare verso l'alto fino a raggiungere il controllo a cui tengo.

addizione: stili impliciti:

<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> 

Se vi capitasse di voler definire uno stile implicita a livello locale senza sovrascrivere un altro stile implicita impostare più in alto nella catena, si può fare questo:

<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> 

erediterà lo stile implicito e aggiungerà le modifiche per l'UserControl locale.

+0

Bello! Lo stile TextBlock è definito in App.xaml con un set FontSize. Non ho mai pensato di cercare TextBlock per l'intestazione e gli elementi di Listview. Fantastico suggerimento. Grazie ancora! – Yatrix

+2

È inoltre possibile definire un altro stile implicito per TextBlock nel controllo locale.Sovrascriverà lo stile implicito globale impostato in App.xaml –

+0

Damn, amico. Lasciare ogni tipo di conoscenza su di me. Stavo appena iniziando a capire come ignorarlo. Grazie ancora. Chi avrebbe mai pensato che un Babuino avrebbe saputo così tanto di XAML. – Yatrix

4

Per me i seguenti lavori per gli elementi sia di intestazione e:

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

Non ho idea di quello che potrebbe essere sbagliato nel tuo caso però ...

1

Se si desidera impostare solo l'intestazione dimensione, quindi prova questa soluzione o usa @HB soluzione

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

enter image description here

speranza che questo aiuta

+0

Questo non funziona. – Xcalibur37

+0

@ Xcalibur37 Funziona come un fascino! sulla mia macchina ™ (ho aggiornato la mia risposta con uno screenshot) – punker76

+0

Ci scusiamo per aver bussato alla tua risposta. Non riesco a farlo funzionare senza inserire direttamente TextBlock nel contenuto dell'intestazione GridViewColumn. Questo non è raro con GridView e DataGrid. È qualcosa che WPF deve fare meglio. – Xcalibur37