2010-02-05 21 views
7

के लिए शैली को ओवरराइड करता है टेक्स्टब्लॉक पर डिफ़ॉल्ट शैली सेट करना लेबल और अन्य नियंत्रणों में शैली को सेट करने का कारण बनता है। यह तब होता है जब आप शैलियों को अनुप्रयोग संसाधनों में डालते हैं, जब मैं विंडो संसाधनों में शैली डालता हूं तो सब ठीक है।WPF टेक्स्टब्लॉक पर डिफ़ॉल्ट शैली को सेट करना लेबल

मुझे यह भी पता चला है कि वीएस 2008 डिज़ाइनर और एक्समलपैडएक्स लेबल को प्रदर्शित करता है जैसा आप उम्मीद करेंगे लेकिन समस्या तब होती है जब आप वास्तविक जीवन में एप्लिकेशन निष्पादित करते हैं।

<Application x:Class="WpfApplication.App" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    StartupUri="Window1.xaml"> 
    <Application.Resources> 
     <ResourceDictionary> 
      <Style TargetType="TextBlock"> 
       <Setter Property="FontSize" Value="8"/> 
      </Style> 

      <Style x:Key="Title" TargetType="Label"> 
       <Setter Property="FontSize" Value="32"/> 
      </Style> 
     </ResourceDictionary> 
    </Application.Resources> 
</Application> 

<Window x:Class="WpfApplication.Window1" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Height="300" 
     Title="Window1" 
     Width="300"> 
    <StackPanel> 

     <TextBlock Text="TextBlock No Style" Style="{x:Null}"/> 
     <Label Content="Label No Style" Style="{x:Null}"/> 

     <TextBlock Text="Default TextBlock"/> 
     <Label Content="Default Label" Style="{StaticResource Title}"/> 

    </StackPanel> 
</Window> 

प्रदर्शित करता है इसके बाद के संस्करण कोड:

TextBlock No Style - Default font size (As you would expect) 
Label No Style - Size 5 font size (How did this happen?) 
Default TextBlock - Size 5 font size (As expected by my style) 
Default Label - Size 5 font size (How did this happen?) 

उत्तर

10

हाँ, कि उम्मीद की जा करने के लिए; लेबल के लिए डिफ़ॉल्ट टेम्पलेट को देखें, यह सिर्फ एक इंडेंट टेक्स्टब्लॉक है। स्टाइल विरासत में है, इसलिए लेबल फ़ॉन्ट आकार को 32 पर सेट करेगा, लेकिन फिर टेक्स्टब्लॉक की शैली उस पर ओवरराइड होगी। यदि आपके पास अभी था, तो यह 5pt भी होगा। (अर्थात एक वर्ग जो कुछ भी नहीं बदलता है) TextBlock की NormalText, तो शैली है कि कहा जाता है तो जिस तरह से मैं इस का समाधान चाहते हैं, एक डमी उपवर्ग बनाने के लिए है;:

संपादित करें इस तरह आप गलती से अन्य टेक्स्टब्लॉक नहीं उठाएंगे।

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