2011-05-16 3 views

risposta

23

Non c'è ancora un modo per farlo automaticamente per tutte le intestazioni nella tua app. Avrai bisogno di impostare lo stile per ognuno.

Lo stile implicito è in arrivo nell'aggiornamento di Mango e questo dovrebbe consentire di farlo in quel momento.

Aggiornamento
Ecco cosa puoi fare ora.

Creare uno stile modello globale per FontSzie che si desidera. Qualcosa di simile:

<Application.Resources> 
    <DataTemplate x:Key="MyItemHeaderTemplate"> 
     <Grid> 
      <ContentPresenter> 
       <TextBlock Text="{Binding}" FontSize="20" /> 
      </ContentPresenter> 
     </Grid> 
    </DataTemplate> 
</Application.Resources> 

Poi in ogni PanoramaItem che desidero avere stile in questo modo ho impostato il HeaderTemplate:

<controls:PanoramaItem Header="first" HeaderTemplate="{StaticResource MyItemHeaderTemplate}"> 
    // ... 
</controls:PanoramaItem> 
+0

"set stile": intendi set DataTemplate per HeaderTemplate? In tal caso, devo creare 4 DataTemplates per ciascuno dei miei 4 articoli panoramici perché ogni intestazione è diversa? O posso in qualche modo associare un singolo DataTemplate alla proprietà PanoramaItem.Header? – Buju

+0

ah thx. Mi mancava la parte con Text = "{Binding}" ... Non sapevo come accedere alla stringa di intestazione dall'interno del DataTemplate. C'è un modo per controllare quali proprietà posso catalogare nel DataTemplate se qualcosa di simile mi capita di nuovo? – Buju

1

È possibile creare il proprio controllo PanoramaItem e utilizzare generic.xaml per applicare la vostra abitudine Stile PanoramaItem.

public class MyPanoramaItem : Microsoft.Phone.Controls.PanoramaItem 

    { 
     public MyPanoramaItem() 
     { 
      DefaultStyleKey = typeof(MyPanoramaItem); 
     } 
    } 

quindi si crea Themes \ generic.xaml

<ResourceDictionary 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="clr-namespace:YourProjectNamespace"> 

    <Style TargetType="local:MyPanoramaItem"> 
     <!—your custom PanoramaItem style-->  
    </Style> 
</ResourceDictionary> 

e quindi utilizzare la vostra abitudine Panorama in questo modo:

xmlns:controls="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls" 
xmlns:local="clr-namespace:YourProjectNamespace" 

<Grid x:Name="LayoutRoot" Background="Transparent"> 
     <!--Panorama control--> 
     <controls:Panorama Title="my application"> 
      <controls:Panorama.Background> 
       <ImageBrush ImageSource="PanoramaBackground.png"/> 
      </controls:Panorama.Background> 

      <!--Panorama item one--> 
      <local:MyPanoramaItem Header="first item"> 
      </ local:MyPanoramaItem > 
     </controls:Panorama> 

più su generic.xaml e il suo utilizzo è possibile trovare here .

5

Questa era stata una questione difficile anche per me. Tuttavia ho trovato una soluzione piuttosto semplice da occuparsi di questo per ogni oggetto principale che desideri ridimensionare/fontweight/font ... so-on. Ho inserito uno snippet di un progetto in corso su cui ho lavorato. Prendi nota della porzione xaml per i controlli: PanoramaItem.HeaderTemplate. Qui è dove il templete viene modificato per l'elemento di intestazione. In bocca al lupo!

<!--Panorama item one--> 
     <controls:PanoramaItem Header="Locations"> 
      <Grid> 
       <ListBox Height="498" HorizontalAlignment="Left" Margin="2,0,0,0" Name="listBox1" VerticalAlignment="Top" Width="424" /> 
      </Grid> 

      <controls:PanoramaItem.HeaderTemplate> 
       <DataTemplate> 
        <TextBlock Text="{Binding Content, RelativeSource={RelativeSource TemplatedParent}}" FontSize="55" FontFamily="Segoe WP Bold" Foreground="Black" TextAlignment="Left" FontWeight="Normal" FontStyle="Italic" /> 
       </DataTemplate> 
      </controls:PanoramaItem.HeaderTemplate> 


     </controls:PanoramaItem>