样式 Windows Phone 8.1 用户控件
Styling Windows Phone 8.1 UserControl
我在 Windows Phone 8.1 项目中有以下用户控件:
<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>
我知道样式是 "found" 因为我没有收到 "Resource could not be resolved" 错误(如果我更改名称以进行测试,我确实会收到)
None 正在应用样式。我希望 UserControl 背景为蓝色,并且控件上的所有文本块都使用文本大小和系列。我对此很陌生,所以它可能不会像这样工作。
我的问题:它应该像我假设的那样工作吗?如果是,那么我哪里出错了,如果不是,那么我如何将样式应用于 UserControl?
作为测试 - 你可以看到我有一个注释掉的按钮,它的样式确实有效。
所以您的样式定位错误 Type
要获得我认为您要求的内容,您需要这样做:
这针对任何使用 MyUserControlStyle 键的用户控件
<Style TargetType="UserControl" x:Key="MyUserControlStyle" >
<Setter Property="Background" Value="Blue" />
</Style>
这针对页面上的所有 TextBlocks -
注意这里没有键,所以它针对所有 textblocks
。要针对个人 TextBlocks
添加一个键并在 TextBlocks Style
属性
中实现它
<Style TargetType="TextBlock" >
<Setter Property="FontFamily" Value="Arial Black" />
<Setter Property="FontSize" Value="36" />
</Style>
有关 WPF 样式的更多信息,请查看 here
我在 Windows Phone 8.1 项目中有以下用户控件:
<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>
我知道样式是 "found" 因为我没有收到 "Resource could not be resolved" 错误(如果我更改名称以进行测试,我确实会收到)
None 正在应用样式。我希望 UserControl 背景为蓝色,并且控件上的所有文本块都使用文本大小和系列。我对此很陌生,所以它可能不会像这样工作。
我的问题:它应该像我假设的那样工作吗?如果是,那么我哪里出错了,如果不是,那么我如何将样式应用于 UserControl?
作为测试 - 你可以看到我有一个注释掉的按钮,它的样式确实有效。
所以您的样式定位错误 Type
要获得我认为您要求的内容,您需要这样做:
这针对任何使用 MyUserControlStyle 键的用户控件
<Style TargetType="UserControl" x:Key="MyUserControlStyle" >
<Setter Property="Background" Value="Blue" />
</Style>
这针对页面上的所有 TextBlocks -
注意这里没有键,所以它针对所有 textblocks
。要针对个人 TextBlocks
添加一个键并在 TextBlocks Style
属性
<Style TargetType="TextBlock" >
<Setter Property="FontFamily" Value="Arial Black" />
<Setter Property="FontSize" Value="36" />
</Style>
有关 WPF 样式的更多信息,请查看 here