2010-01-12 4 views
3

Я использую стиль в моем XAML для метки:WPF свойства наиважнейших инкубационного

<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> 
... 

Проблемы, которую я вижу в том, что свойство FontSize из «reatreatText» не переопределяется от значения законодательницы 30. Это строит отлично, но конечный дисплей имеет «reatreatText» как размер 30. Почему это значение не переопределено?

Заранее спасибо.

+0

Какой размер шрифта вы ожидаете от 'retreatText'? Если я прочитаю это правильно, у него будет размер шрифта 16. –

+0

Yup. Это верно. – BabaBooey

ответ

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> 

Результат:

alt text http://img231.imageshack.us/img231/695/capture2p.png

+0

Вы правы! После запуска приложения он отображается правильно. Проблема заключается в интерпретаторе Visual Studio XAML, который я использую для разработки. Он не интерпретирует новый размер шрифта должным образом. – BabaBooey

0

Вам нужно установить TemplateBinding на TextBlock.

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

Вот как свойства сеттера распространяются на внутреннюю структуру.

+0

Упс. Неправильный вопрос. При явной установке размера в TextBlock должен быть установлен размер 16. – SergioL

Смежные вопросы