2015-04-14 4 views
0

У меня есть следующие UserControl в 8.1 проекта Windows Phone:Styling Windows Phone 8,1 UserControl

<UserControl 
x:Name="AuditItem" 
x:Class="WindowsPhone.OverviewAuditItem" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:local="using:WindowsPhone" 
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
mc:Ignorable="d" 
Height="Auto" 
Tapped="AuditItem_Tapped" 
Style="{StaticResource MyUserControlStyle}"> 

<Grid x:Name="contentGrid"> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto"></RowDefinition> 
    </Grid.RowDefinitions> 

    <StackPanel Grid.Row="0" Height="160" > 
     <TextBlock x:Name="textAuditName" Margin="10,10,0,0" TextWrapping="Wrap" Text="Audit Name" VerticalAlignment="Top"/> 
     <TextBlock x:Name="textCreatedDate" HorizontalAlignment="Left" TextWrapping="Wrap" Text="TextBlock" VerticalAlignment="Center"/> 
     <TextBlock x:Name="textLastOpened" HorizontalAlignment="Left" TextWrapping="Wrap" Text="TextBlock" VerticalAlignment="Center" /> 
     <!--<Button Content="This styling works but the UC style doesn't" 
       Height="100" 
       Style="{StaticResource MyButtonStyle}" />--> 
     <StackPanel Orientation="Horizontal" Grid.Column="2"> 
      <TextBlock x:Name="textDeadline" HorizontalAlignment="Left" TextWrapping="Wrap" Text="TextBlock" VerticalAlignment="Center" Grid.Column="2"/> 
      <Grid x:Name="blockOverdue" Margin="10,0,0,0"> 
       <Image Source="PNGs/alerticon.png" Stretch="None" HorizontalAlignment="Center" /> 
      </Grid> 
     </StackPanel> 
     <TextBlock x:Name="textTemplate" HorizontalAlignment="Left" TextWrapping="Wrap" Text="TextBlock" VerticalAlignment="Center" Grid.Column="3"/> 

    </StackPanel> 
</Grid> 

Я определил свой стиль в файле App.xaml:

<Style TargetType="local:OverviewAuditItem" x:Key="MyUserControlStyle" > 
      <Setter Property="Background" Value="Blue" /> 
      <Setter Property="FontFamily" Value="Arial Black" /> 
      <Setter Property="FontSize" Value="36" /> 
     </Style> 

Я знаю, что стиль «найден», потому что я не получаю ошибку «Ресурс не может быть разрешен» (что я получаю, если меняю имя для теста)

Ни один из стилей не применяется. Я ожидал, что фон UserControl будет синим и все текстовые блоки в элементе управления будут использовать размер текста и семью. Я довольно новичок в этом, поэтому, возможно, он не работает так.

Мои вопросы: Должен ли он работать, как я предполагаю? если да, то где я ошибаюсь, если нет, то как мне применить стилирование к UserControl?

В качестве теста - вы можете видеть, что у меня есть кнопка с комментариями, стиль для этого действительно работает.

ответ

1

Таким образом, ваш стиль ориентирован неправильный Type, чтобы получить то, что я думаю, что вы просите вам нужно будет сделать это:

Это Цели любых UserControl в том, что используют MyUserControlStyle ключ

<Style TargetType="UserControl" x:Key="MyUserControlStyle" > 
    <Setter Property="Background" Value="Blue" /> 
</Style> 

Это задает все текстовые блоки на странице - Обратите внимание, что здесь нет ключа, поэтому он нацелен на все textblocks. Для целевого индивидуального TextBlocks добавить ключ и его реализацию в TextBlocks Style собственности

<Style TargetType="TextBlock" > 
    <Setter Property="FontFamily" Value="Arial Black" /> 
    <Setter Property="FontSize" Value="36" /> 
</Style> 

Для получения дополнительной информации о стилях WPF посмотри here

+0

Ах ОК - я не пробовал, но никаких изменений, поэтому я подумал, Сетки на UserControl скрывался синий фон. Когда я добавил стиль в сетку и изменил TargetType на Grid, у него был синий фон. – Rick

+0

Я думал, что вы можете создать «стиль» с набором «правил» для разных типов - очевидно, нет. Спасибо за вашу помощь. – Rick

+0

@ Рик да Сетка скроет фон 'UserControls'. Если это правильный ответ, можете ли вы его пометить. благодаря – user1