2008-12-30 20 views
34

मेरे पास एक विस्तारक के लिए एक कस्टम टेम्पलेट है जो नीचे दिए गए कोड के करीब है। मैं कस्टम कक्षाएं, ब्रश, आदि बाहर निकालने के लिए कोड के कुछ बदलना पड़ा ..मैं सामग्री सामग्री पर FontFamily कैसे बदलूं?

<Style TargetType="{x:Type Expander}"> 
    <Setter Property="HorizontalContentAlignment" 
      Value="Stretch" /> 
    <Setter Property="VerticalContentAlignment" 
      Value="Top" /> 
    <Setter Property="BorderBrush" 
      Value="Transparent" /> 
    <Setter Property="FontFamily" 
      Value="Tahoma" /> 
    <Setter Property="FontSize" 
      Value="12" /> 
    <Setter Property="Foreground" 
      Value="Black" /> 
    <Setter Property="BorderThickness" 
      Value="1" /> 
    <Setter Property="Margin" 
      Value="2,0,0,0" /> 
    <Setter Property="Template"> 
    <Setter.Value> 
     <ControlTemplate TargetType="{x:Type Expander}"> 
     <Border x:Name="Border" 
       SnapsToDevicePixels="true" 
       Background="White" 
       BorderBrush="{TemplateBinding BorderBrush}" 
       BorderThickness="{TemplateBinding BorderThickness}" 
       Margin="0,0,0,10" 
       Padding="0" 
       CornerRadius="8"> 
      <DockPanel> 
      <Border x:Name="HeaderSite" 
        Background="Blue" 
        CornerRadius="8" 
        Height="32" 
        DockPanel.Dock="Top"> 
       <DockPanel> 
       <ToggleButton Foreground="White" 
           HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" 
           VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" 
           Margin="0" 
           MinHeight="0" 
           MinWidth="0" 
           Padding="6,2,6,2" 
           IsChecked="{Binding Path=IsExpanded, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" 
           DockPanel.Dock="Left"> 
       </ToggleButton>     

       <ContentPresenter SnapsToDevicePixels="True" 
            HorizontalAlignment="Left" 
            Margin="4,0,0,0" 
            ContentSource="Header" 
            VerticalAlignment="Center" 
            RecognizesAccessKey="True" /> 
       </DockPanel> 
      </Border> 
      <Border x:Name="InnerBorder" 
        Margin="0" > 
       <ContentPresenter Focusable="false" 
           Visibility="Collapsed" 
           HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
           Margin="{TemplateBinding Padding}" 
           x:Name="ExpandSite" 
           VerticalAlignment="{TemplateBinding VerticalContentAlignment}" 
           DockPanel.Dock="Bottom" /> 
      </Border> 
      </DockPanel> 
     </Border> 
     <ControlTemplate.Triggers> 
      <Trigger Property="IsExpanded" 
        Value="true"> 
      <Setter Property="Margin" 
        TargetName="InnerBorder" 
        Value="5" />   
      <Setter Property="Visibility" 
        TargetName="ExpandSite" 
        Value="Visible" /> 
      </Trigger> 
      <Trigger Property="IsEnabled" 
        Value="false"> 
      <Setter Property="Foreground" 
        Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}" /> 
      </Trigger>   
     </ControlTemplate.Triggers> 
     </ControlTemplate> 
    </Setter.Value> 
    </Setter> 
</Style> 

आप देख सकते हैं वहाँ दो ContentPresenters हैं। मैं पहले ताहोमा बोल्ड को डिफ़ॉल्ट ताहोमा के बजाय फ़ॉन्ट के रूप में उपयोग करना चाहता हूं। मैं यह कैसे कर सकता हूँ?

उत्तर

45

आपको बोल्ड फ़ॉन्ट निर्दिष्ट करने के लिए FontWeight प्रॉपर्टी का उपयोग करने की आवश्यकता है। हालांकि, आपने शायद देखा है कि सामग्री प्रदाता के पास उस संपत्ति नहीं है। तो आपको सामग्री प्रतिनिधि को यह बताने के लिए TextBlock.FontWeight संलग्न संपत्ति का उपयोग करने की आवश्यकता होगी कि इसके अंदर कोई भी पाठ बोल्ड होना चाहिए।

इस प्रयास करें:

+0

कि पूरी तरह से काम किया है। स्वत: TextBlock जेनरेट (ऑब्जेक्ट पर बाध्यकारी) के मामले में त्वरित प्रतिक्रिया –

+0

के लिए धन्यवाद यह काम नहीं करता है। ContentPresenter.Rourceource में बजाय शैली का उपयोग करें। स्रोत और क्रेडिट https://stackoverflow.com/a/20117653/1271037 – dovid

7

मैं Silverlight के बारे में मदद नहीं कर सकता, लेकिन नए WPF 4 में यह TextElement बल्कि TextBlock से

संबंधित मुद्दे