Silverlight 如何在WP-XAML中使用上标?

Silverlight 如何在WP-XAML中使用上标?,silverlight,xaml,windows-phone-8,Silverlight,Xaml,Windows Phone 8,这是我的WP8应用程序中使用的usercontrol。它显示当前时间。fontsize由使用此控件的屏幕指定。我想在上面,但与内联的文本 <TextBlock Text="{Binding BindingHour}" FontWeight="Bold" Name="txtHour" Grid.Row="0" Grid.Column="0" FontSize="{Binding BindingHourFontSize}" /> <

这是我的WP8应用程序中使用的usercontrol。它显示当前时间。fontsize由使用此控件的屏幕指定。我想在上面,但与内联的文本

<TextBlock Text="{Binding BindingHour}" FontWeight="Bold" Name="txtHour" 
             Grid.Row="0" Grid.Column="0"
            FontSize="{Binding BindingHourFontSize}" />
<TextBlock Text=":" FontWeight="ExtraLight"  
             Grid.Row="0"  Grid.Column="1"
            FontSize="{Binding BindingColonFontSize}" />
<TextBlock Text="{Binding BindingMinute}" FontWeight="Thin"  
            Grid.Row="0" Grid.Column="2"  
            FontSize="{Binding BindingMinuteFontSize}"/>

<TextBlock Text="{Binding BindingAmPm}" FontWeight="SemiBold" Grid.Row="0" Grid.Column="3" />

<TextBlock Grid.Row="1" HorizontalAlignment="Center" FontWeight="SemiBold"
           Text="{Binding BindingFreeText}" Grid.ColumnSpan="5"/>
这是我的XAML控制代码。还要注意,WP8中不支持排版.Variants

<TextBlock Text="{Binding BindingHour}" FontWeight="Bold" Name="txtHour" 
             Grid.Row="0" Grid.Column="0"
            FontSize="{Binding BindingHourFontSize}" />
<TextBlock Text=":" FontWeight="ExtraLight"  
             Grid.Row="0"  Grid.Column="1"
            FontSize="{Binding BindingColonFontSize}" />
<TextBlock Text="{Binding BindingMinute}" FontWeight="Thin"  
            Grid.Row="0" Grid.Column="2"  
            FontSize="{Binding BindingMinuteFontSize}"/>

<TextBlock Text="{Binding BindingAmPm}" FontWeight="SemiBold" Grid.Row="0" Grid.Column="3" />

<TextBlock Grid.Row="1" HorizontalAlignment="Center" FontWeight="SemiBold"
           Text="{Binding BindingFreeText}" Grid.ColumnSpan="5"/>

<TextBlock Text="{Binding BindingHour}" FontWeight="Bold" Name="txtHour" 
             Grid.Row="0" Grid.Column="0"
            FontSize="{Binding BindingHourFontSize}" />
<TextBlock Text=":" FontWeight="ExtraLight"  
             Grid.Row="0"  Grid.Column="1"
            FontSize="{Binding BindingColonFontSize}" />
<TextBlock Text="{Binding BindingMinute}" FontWeight="Thin"  
            Grid.Row="0" Grid.Column="2"  
            FontSize="{Binding BindingMinuteFontSize}"/>

<TextBlock Text="{Binding BindingAmPm}" FontWeight="SemiBold" Grid.Row="0" Grid.Column="3" />

<TextBlock Grid.Row="1" HorizontalAlignment="Center" FontWeight="SemiBold"
           Text="{Binding BindingFreeText}" Grid.ColumnSpan="5"/>

<TextBlock Text="{Binding BindingHour}" FontWeight="Bold" Name="txtHour" 
             Grid.Row="0" Grid.Column="0"
            FontSize="{Binding BindingHourFontSize}" />
<TextBlock Text=":" FontWeight="ExtraLight"  
             Grid.Row="0"  Grid.Column="1"
            FontSize="{Binding BindingColonFontSize}" />
<TextBlock Text="{Binding BindingMinute}" FontWeight="Thin"  
            Grid.Row="0" Grid.Column="2"  
            FontSize="{Binding BindingMinuteFontSize}"/>

<TextBlock Text="{Binding BindingAmPm}" FontWeight="SemiBold" Grid.Row="0" Grid.Column="3" />

<TextBlock Grid.Row="1" HorizontalAlignment="Center" FontWeight="SemiBold"
           Text="{Binding BindingFreeText}" Grid.ColumnSpan="5"/>
以下是我使用上述控件时屏幕上的显示方式。

<TextBlock Text="{Binding BindingHour}" FontWeight="Bold" Name="txtHour" 
             Grid.Row="0" Grid.Column="0"
            FontSize="{Binding BindingHourFontSize}" />
<TextBlock Text=":" FontWeight="ExtraLight"  
             Grid.Row="0"  Grid.Column="1"
            FontSize="{Binding BindingColonFontSize}" />
<TextBlock Text="{Binding BindingMinute}" FontWeight="Thin"  
            Grid.Row="0" Grid.Column="2"  
            FontSize="{Binding BindingMinuteFontSize}"/>

<TextBlock Text="{Binding BindingAmPm}" FontWeight="SemiBold" Grid.Row="0" Grid.Column="3" />

<TextBlock Grid.Row="1" HorizontalAlignment="Center" FontWeight="SemiBold"
           Text="{Binding BindingFreeText}" Grid.ColumnSpan="5"/>

<TextBlock Text="{Binding BindingHour}" FontWeight="Bold" Name="txtHour" 
             Grid.Row="0" Grid.Column="0"
            FontSize="{Binding BindingHourFontSize}" />
<TextBlock Text=":" FontWeight="ExtraLight"  
             Grid.Row="0"  Grid.Column="1"
            FontSize="{Binding BindingColonFontSize}" />
<TextBlock Text="{Binding BindingMinute}" FontWeight="Thin"  
            Grid.Row="0" Grid.Column="2"  
            FontSize="{Binding BindingMinuteFontSize}"/>

<TextBlock Text="{Binding BindingAmPm}" FontWeight="SemiBold" Grid.Row="0" Grid.Column="3" />

<TextBlock Grid.Row="1" HorizontalAlignment="Center" FontWeight="SemiBold"
           Text="{Binding BindingFreeText}" Grid.ColumnSpan="5"/>
以下是我希望它看起来是什么样子,但在XAML中却无法做到。此外,WP XAML中不支持上标和下标。奇怪

<TextBlock Text="{Binding BindingHour}" FontWeight="Bold" Name="txtHour" 
             Grid.Row="0" Grid.Column="0"
            FontSize="{Binding BindingHourFontSize}" />
<TextBlock Text=":" FontWeight="ExtraLight"  
             Grid.Row="0"  Grid.Column="1"
            FontSize="{Binding BindingColonFontSize}" />
<TextBlock Text="{Binding BindingMinute}" FontWeight="Thin"  
            Grid.Row="0" Grid.Column="2"  
            FontSize="{Binding BindingMinuteFontSize}"/>

<TextBlock Text="{Binding BindingAmPm}" FontWeight="SemiBold" Grid.Row="0" Grid.Column="3" />

<TextBlock Grid.Row="1" HorizontalAlignment="Center" FontWeight="SemiBold"
           Text="{Binding BindingFreeText}" Grid.ColumnSpan="5"/>

好吧,您似乎可以通过
排版.variations
附加属性以与通过WPF相同的方式来完成

<TextBlock Text="{Binding BindingHour}" FontWeight="Bold" Name="txtHour" 
             Grid.Row="0" Grid.Column="0"
            FontSize="{Binding BindingHourFontSize}" />
<TextBlock Text=":" FontWeight="ExtraLight"  
             Grid.Row="0"  Grid.Column="1"
            FontSize="{Binding BindingColonFontSize}" />
<TextBlock Text="{Binding BindingMinute}" FontWeight="Thin"  
            Grid.Row="0" Grid.Column="2"  
            FontSize="{Binding BindingMinuteFontSize}"/>

<TextBlock Text="{Binding BindingAmPm}" FontWeight="SemiBold" Grid.Row="0" Grid.Column="3" />

<TextBlock Grid.Row="1" HorizontalAlignment="Center" FontWeight="SemiBold"
           Text="{Binding BindingFreeText}" Grid.ColumnSpan="5"/>

<TextBlock Text="{Binding BindingHour}" FontWeight="Bold" Name="txtHour" 
             Grid.Row="0" Grid.Column="0"
            FontSize="{Binding BindingHourFontSize}" />
<TextBlock Text=":" FontWeight="ExtraLight"  
             Grid.Row="0"  Grid.Column="1"
            FontSize="{Binding BindingColonFontSize}" />
<TextBlock Text="{Binding BindingMinute}" FontWeight="Thin"  
            Grid.Row="0" Grid.Column="2"  
            FontSize="{Binding BindingMinuteFontSize}"/>

<TextBlock Text="{Binding BindingAmPm}" FontWeight="SemiBold" Grid.Row="0" Grid.Column="3" />

<TextBlock Grid.Row="1" HorizontalAlignment="Center" FontWeight="SemiBold"
           Text="{Binding BindingFreeText}" Grid.ColumnSpan="5"/>
它允许您指定字体的上标/下标变体。然而,这并不是你真正想要的。您的AM/PM在栅格控件中显示为垂直对齐。如果它相对于相邻字符显得太高,只需通过边距将其向下推即可

<TextBlock Text="{Binding BindingHour}" FontWeight="Bold" Name="txtHour" 
             Grid.Row="0" Grid.Column="0"
            FontSize="{Binding BindingHourFontSize}" />
<TextBlock Text=":" FontWeight="ExtraLight"  
             Grid.Row="0"  Grid.Column="1"
            FontSize="{Binding BindingColonFontSize}" />
<TextBlock Text="{Binding BindingMinute}" FontWeight="Thin"  
            Grid.Row="0" Grid.Column="2"  
            FontSize="{Binding BindingMinuteFontSize}"/>

<TextBlock Text="{Binding BindingAmPm}" FontWeight="SemiBold" Grid.Row="0" Grid.Column="3" />

<TextBlock Grid.Row="1" HorizontalAlignment="Center" FontWeight="SemiBold"
           Text="{Binding BindingFreeText}" Grid.ColumnSpan="5"/>
下面是一个布局示例

<TextBlock Text="{Binding BindingHour}" FontWeight="Bold" Name="txtHour" 
             Grid.Row="0" Grid.Column="0"
            FontSize="{Binding BindingHourFontSize}" />
<TextBlock Text=":" FontWeight="ExtraLight"  
             Grid.Row="0"  Grid.Column="1"
            FontSize="{Binding BindingColonFontSize}" />
<TextBlock Text="{Binding BindingMinute}" FontWeight="Thin"  
            Grid.Row="0" Grid.Column="2"  
            FontSize="{Binding BindingMinuteFontSize}"/>

<TextBlock Text="{Binding BindingAmPm}" FontWeight="SemiBold" Grid.Row="0" Grid.Column="3" />

<TextBlock Grid.Row="1" HorizontalAlignment="Center" FontWeight="SemiBold"
           Text="{Binding BindingFreeText}" Grid.ColumnSpan="5"/>
<Grid
   Width="auto"
   Height="100"
   HorizontalAlignment="Center"
   VerticalAlignment="Center">
   <Grid.RowDefinitions>
      <RowDefinition/>
      <RowDefinition Height="auto"/>
   </Grid.RowDefinitions>
   <Grid.ColumnDefinitions>
      <ColumnDefinition/>
      <ColumnDefinition Width="auto"/>
      <ColumnDefinition/>
      <ColumnDefinition Width="auto"/>
   </Grid.ColumnDefinitions>
   <TextBlock
      Grid.Column="0"
      Grid.Row="0"
      FontSize="80"
      Text="09"/>
   <TextBlock
      Grid.Column="1"
      Grid.Row="0"
      VerticalAlignment="Center"
      FontSize="50"
      Text=":"/>
   <TextBlock
      Grid.Column="2"
      Grid.Row="0"
      FontSize="80"
      Text="11"/>
   <TextBlock
      Margin="0 20 0 0"
      Grid.Column="3"
      Grid.Row="0"
      FontSize="20"
      Text="AM"/>
</Grid>

以及它的外观快照

<TextBlock Text="{Binding BindingHour}" FontWeight="Bold" Name="txtHour" 
             Grid.Row="0" Grid.Column="0"
            FontSize="{Binding BindingHourFontSize}" />
<TextBlock Text=":" FontWeight="ExtraLight"  
             Grid.Row="0"  Grid.Column="1"
            FontSize="{Binding BindingColonFontSize}" />
<TextBlock Text="{Binding BindingMinute}" FontWeight="Thin"  
            Grid.Row="0" Grid.Column="2"  
            FontSize="{Binding BindingMinuteFontSize}"/>

<TextBlock Text="{Binding BindingAmPm}" FontWeight="SemiBold" Grid.Row="0" Grid.Column="3" />

<TextBlock Grid.Row="1" HorizontalAlignment="Center" FontWeight="SemiBold"
           Text="{Binding BindingFreeText}" Grid.ColumnSpan="5"/>

<TextBlock Text="{Binding BindingHour}" FontWeight="Bold" Name="txtHour" 
             Grid.Row="0" Grid.Column="0"
            FontSize="{Binding BindingHourFontSize}" />
<TextBlock Text=":" FontWeight="ExtraLight"  
             Grid.Row="0"  Grid.Column="1"
            FontSize="{Binding BindingColonFontSize}" />
<TextBlock Text="{Binding BindingMinute}" FontWeight="Thin"  
            Grid.Row="0" Grid.Column="2"  
            FontSize="{Binding BindingMinuteFontSize}"/>

<TextBlock Text="{Binding BindingAmPm}" FontWeight="SemiBold" Grid.Row="0" Grid.Column="3" />

<TextBlock Grid.Row="1" HorizontalAlignment="Center" FontWeight="SemiBold"
           Text="{Binding BindingFreeText}" Grid.ColumnSpan="5"/>
要在拉伸/压缩以填充现有空间时保持相对位置不变,请使用视口

<TextBlock Text="{Binding BindingHour}" FontWeight="Bold" Name="txtHour" 
             Grid.Row="0" Grid.Column="0"
            FontSize="{Binding BindingHourFontSize}" />
<TextBlock Text=":" FontWeight="ExtraLight"  
             Grid.Row="0"  Grid.Column="1"
            FontSize="{Binding BindingColonFontSize}" />
<TextBlock Text="{Binding BindingMinute}" FontWeight="Thin"  
            Grid.Row="0" Grid.Column="2"  
            FontSize="{Binding BindingMinuteFontSize}"/>

<TextBlock Text="{Binding BindingAmPm}" FontWeight="SemiBold" Grid.Row="0" Grid.Column="3" />

<TextBlock Grid.Row="1" HorizontalAlignment="Center" FontWeight="SemiBold"
           Text="{Binding BindingFreeText}" Grid.ColumnSpan="5"/>
如果创建以下视图,并将栅格粘贴到以下每个视口中

<TextBlock Text="{Binding BindingHour}" FontWeight="Bold" Name="txtHour" 
             Grid.Row="0" Grid.Column="0"
            FontSize="{Binding BindingHourFontSize}" />
<TextBlock Text=":" FontWeight="ExtraLight"  
             Grid.Row="0"  Grid.Column="1"
            FontSize="{Binding BindingColonFontSize}" />
<TextBlock Text="{Binding BindingMinute}" FontWeight="Thin"  
            Grid.Row="0" Grid.Column="2"  
            FontSize="{Binding BindingMinuteFontSize}"/>

<TextBlock Text="{Binding BindingAmPm}" FontWeight="SemiBold" Grid.Row="0" Grid.Column="3" />

<TextBlock Grid.Row="1" HorizontalAlignment="Center" FontWeight="SemiBold"
           Text="{Binding BindingFreeText}" Grid.ColumnSpan="5"/>
<Grid
  Width="auto"
  Height="auto"
  HorizontalAlignment="Center"
  VerticalAlignment="Center">
  <Grid.RowDefinitions>
     <RowDefinition Height="100"/>
     <RowDefinition Height="50"/>
  </Grid.RowDefinitions>
  <Grid.ColumnDefinitions>
     <ColumnDefinition/>
     <ColumnDefinition/>
  </Grid.ColumnDefinitions>
  <Viewbox Grid.ColumnSpan="2"></Viewbox>
  <Viewbox Grid.Row="1"></Viewbox>
  <Viewbox Grid.Row="1" Grid.Column="1"></Viewbox>
</Grid>

你会得到以下结果

<TextBlock Text="{Binding BindingHour}" FontWeight="Bold" Name="txtHour" 
             Grid.Row="0" Grid.Column="0"
            FontSize="{Binding BindingHourFontSize}" />
<TextBlock Text=":" FontWeight="ExtraLight"  
             Grid.Row="0"  Grid.Column="1"
            FontSize="{Binding BindingColonFontSize}" />
<TextBlock Text="{Binding BindingMinute}" FontWeight="Thin"  
            Grid.Row="0" Grid.Column="2"  
            FontSize="{Binding BindingMinuteFontSize}"/>

<TextBlock Text="{Binding BindingAmPm}" FontWeight="SemiBold" Grid.Row="0" Grid.Column="3" />

<TextBlock Grid.Row="1" HorizontalAlignment="Center" FontWeight="SemiBold"
           Text="{Binding BindingFreeText}" Grid.ColumnSpan="5"/>

为什么所有绑定都是双向的?那没有任何意义,我会改变的。这只是一个演示代码。设置边距在这里不起作用。这是因为字体大小可以是任何东西。当字体大小固定时,我可以设置固定的边距。这是一个自定义控件,因此我无法在自定义控件中设置边距。我的OP中的第一张图片显示了设置任何边距时发生的情况。而且,它不会工作,因为我在列表框中使用它。在这种情况下,每个项目的上边距都会不同。@Nexus:那个评论没有意义。我可以向您保证,它会将AM/PM从网格顶部推离,使其更接近您想要的位置。放心。现在,如果你说它不总是有效的,因为字体中的数字有不同的高度,那是另一个问题。所以“永不工作”是错误的。您可能需要澄清正在发生的事情,因为这很有效(添加图像,稍后演示)@Will:(重新编辑)您的属性中有
Grid.Row
Grid.Column
。。。这告诉我你正在网格中定位块。这不对吗?威尔:对。我把所有的东西都放在一个格子里。还有别的办法吗?也很抱歉快速编辑我的回复:)@Nexus:请查看编辑。这对你来说应该很好。尝试一下,如果你的问题看起来仍然不可靠,用一个新的快照更新它。
<TextBlock Text="{Binding BindingHour}" FontWeight="Bold" Name="txtHour" 
             Grid.Row="0" Grid.Column="0"
            FontSize="{Binding BindingHourFontSize}" />
<TextBlock Text=":" FontWeight="ExtraLight"  
             Grid.Row="0"  Grid.Column="1"
            FontSize="{Binding BindingColonFontSize}" />
<TextBlock Text="{Binding BindingMinute}" FontWeight="Thin"  
            Grid.Row="0" Grid.Column="2"  
            FontSize="{Binding BindingMinuteFontSize}"/>

<TextBlock Text="{Binding BindingAmPm}" FontWeight="SemiBold" Grid.Row="0" Grid.Column="3" />

<TextBlock Grid.Row="1" HorizontalAlignment="Center" FontWeight="SemiBold"
           Text="{Binding BindingFreeText}" Grid.ColumnSpan="5"/>