样式化Windows Phone 8.1 UserControl

时间:2015-04-14 10:04:30

标签: c# xaml windows-phone-8.1

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

我知道Style已被“找到”因为我没有得到“资源无法解决”的错误(如果我更改测试的名称,我会得到)

虽然没有应用任何样式。我希望UserControl背景为蓝色,控件上的所有文本块都使用文本大小和族。我对此很陌生,所以它可能不会像这样工作。

我的问题:它应该像我假设的那样工作吗?如果是,那么我哪里出错,如果没有,那么我如何将样式应用于UserControl?

作为测试 - 你可以看到我有一个注释掉的按钮,这个样式确实有效。

1 个答案:

答案 0 :(得分:1)

所以你的Style定位错误Type以获得我认为你要求的东西你需要这样做:

此目标是使用MyUserControlStyle键的任何UserControl

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

这会瞄准页面上的所有TextBlock - 请注意此处没有关键字,因此它定位所有textblocks。要定位单个TextBlocks,请添加密钥并在TextBlocks Style属性

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

有关WPF样式的更多信息,请查看here