2009-01-19 138 views
2

在我的WPF列表框中,我有一個帶有ControlTemplate的樣式的ListBoxItem樣式。在ControlTemplate的內部,我定義了一個標籤。根據一些細節,我需要更改標籤的字體大小。所以從我的代碼隱藏,我需要確定字體應該是什麼,然後我需要設置它。如何在ControlTemplate中更改標籤的字體大小

這是我與控件模板樣式(我已經去掉了一些無關痛癢的控制)

<Style x:Key="RecordTabList" TargetType="{x:Type ListBoxItem}"> 
      <Setter Property="Background" Value="{DynamicResource RecordIndexTabBackcolor}" /> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate>   
          <Label 
           x:Name="myLabel" Grid.Column="0" Grid.ColumnSpan="1" Grid.Row="0" Grid.RowSpan="1" Margin="3,-2,0,-2" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Foreground="{DynamicResource RecordIndexTabForeground}" 
           FontSize="10" Height="Auto" BorderThickness="3,0,0,0" 
           Content="{Binding Path=Name}" /> 
         </Grid> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 

我怎樣才能做到這一點?

回答

4

如果我理解你正確,你可以做類似於下面的事情,並簡單地改變ListBoxItem本身的FontSize屬性;它會自動反映在您的標籤上。將其複製到VS中,並在行動中看到它!

<Window.Resources> 
    <Style TargetType="ListBoxItem"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="ListBoxItem"> 
        <Label Content="{TemplateBinding Content}" FontSize="{TemplateBinding FontSize}"/> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</Window.Resources> 
<Grid> 
    <ListBox Margin="12"> 
     <ListBoxItem Content="Test 1" FontSize="14"/> 
     <ListBoxItem Content="Test 2" FontSize="18"/> 
     <ListBoxItem Content="Test 3" FontSize="22"/> 
    </ListBox> 
</Grid> 
0

您可能可以在FontSize屬性上使用ValueConverter ..但我不是100%確定它們是否在ControlTemplate中工作..我似乎記得Silverlight有問題,但我記不起如果它在WPF中工作。

0

如果你想設置字號後面的代碼中,你應該從控件模板移除字號,然後將其設置在代碼隱藏的ListBoxItem中。如果要爲所有ListBoxItems設置相同的大小,只需在代碼隱藏中設置ListBox的FontSize即可。

相關問題