2011-05-16 17 views

Respuesta

23

Aún no hay una manera de hacerlo automáticamente para todos los encabezados en su aplicación. Tendrá que establecer el estilo para cada uno.

El estilo implícito viene en la actualización de Mango y debería permitir que esto se haga en ese momento.

Actualización
Esto es lo que puede hacer ahora.

Cree un estilo de plantilla global para el FontSzie que desee. Algo así como:

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

Luego, en cada PanoramaItem que me gustaría haber labrado de esta manera me puse la HeaderTemplate:

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

"set style": ¿quieres decir configurar DataTemplate para HeaderTemplate? Si es así, ¿necesito crear 4 plantillas de datos para cada uno de mis 4 elementos de panorama porque cada encabezado de elemento es diferente? ¿O puedo vincular de alguna manera un único DataTemplate a la propiedad PanoramaItem.Header? – Buju

+0

ah thx. Me faltaba la parte con Text = "{Binding}" ... No sabía cómo acceder a la cadena del encabezado desde DataTemplate. ¿Hay alguna forma de buscar qué propiedades puedo enlazar en DataTemplate si alguna vez me sucede algo como esto? – Buju

1

Usted puede crear su propio control PanoramaItem y utilizar generic.xaml para aplicar su encargo Estilo de PanoramaItem.

public class MyPanoramaItem : Microsoft.Phone.Controls.PanoramaItem 

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

A continuación, crear temas \ 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> 

y luego usar su costumbre Panorama de esta manera:

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> 

Más sobre generic.xaml y su uso se puede encontrar here .

5

Este había sido un tema difícil para mí también. Sin embargo, he encontrado una solución bastante simple para encargarme de esto para cada elemento principal que quiera cambiar el tamaño/fontweight/font ... y así sucesivamente. He insertado un fragmento de un proyecto actual en el que he estado trabajando. Tome nota de la parte xaml para los controles: PanoramaItem.HeaderTemplate. Aquí es donde se modifica el templete para el elemento del encabezado. ¡Buena suerte!

<!--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> 
Cuestiones relacionadas