3

XAMLでラベルにスタイルを使用しています:

<Style x:Key="TreatEye" TargetType="Label">
        <Setter Property="Foreground" Value="#d1d1d1" />
        <Setter Property="FontWeight" Value="Bold" />
        <Setter Property="FontSize" Value="30" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="Label">
                    <Canvas>                            
                        <TextBlock x:Name="retreatText" Canvas.Left="80" Canvas.Top="5" FontSize="16"  Text="Retreatment"/>                                                        
                        <TextBlock x:Name="bioinsulatorText" Canvas.Left="21" Canvas.Top="33" Text="Bioinsulator" />
                        <TextBlock x:Name="kxlText" Canvas.Left="21" Canvas.Top="70" Text="KXL Kit" />
                    </Canvas>
...

私が見ている問題は、「reatreatText」のFontSizeプロパティがセッター値30からオーバーライドされないことです。これは正常にビルドされますが、最終表示にはサイズ30の「reatreatText」があります。この値がオーバーライドされないのはなぜですか。

前もって感謝します。

4

2 に答える 2

3

申し訳ありませんが、Kaxaml内でコードを試しましたが、期待どおりに機能します。

<Page
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <Page.Resources>
  <Style x:Key="TreatEye" TargetType="Label">
        <Setter Property="Foreground" Value="#d1d1d1" />
        <Setter Property="FontWeight" Value="Bold" />
        <Setter Property="FontSize" Value="30" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="Label">
                    <Canvas>                            
                        <TextBlock x:Name="retreatText" Canvas.Left="80" Canvas.Top="5" FontSize="16" Text="Retreatment"/>                                                        
                        <TextBlock x:Name="bioinsulatorText" Canvas.Left="21" Canvas.Top="33" Text="Bioinsulator" />
                        <TextBlock x:Name="kxlText" Canvas.Left="21" Canvas.Top="70" Text="KXL Kit" />
                    </Canvas>
                </ControlTemplate>
        </Setter.Value>                
      </Setter>
     </Style>
    </Page.Resources>

  <Grid>  
    <Label Style="{StaticResource TreatEye}">Ejemplo</Label>
  </Grid>
</Page>

結果:

代替テキストhttp://img231.imageshack.us/img231/695/capture2p.png

于 2010-01-12T17:39:41.607 に答える
0

TextBlockにTemplateBindingを設定する必要があります。

<TextBlock x:Name="retreatText"
           Canvas.Left="80" 
           Canvas.Top="5" 
           FontSize="{TemplateBinding FontSize}" 
           Text="Retreatment"/> 

これが、セッターのプロパティが内部構造に伝達される方法です。

于 2010-01-12T18:02:57.617 に答える