2009-04-27 15 views
16

यहां तक ​​कि सबसे छोटे WPF उदाहरण और प्रोटोटाइप मैं भी कर रहा हूं, <Windows.Resources> तेजी से को ब्लूट करना शुरू कर देता है। इसे app.xaml में वापस रखकर इसे मेरे विंडोज और उपयोगकर्ता नियंत्रण से बाहर रखा गया है, लेकिन यह को व्यवस्थित करने के लिए कठिन है (विजुअल स्टूडियो "एक्सएएमएल फोल्डिंग" सुविधा कोई मदद नहीं है क्योंकि आपके पास सिर्फ "स्टाइल" शब्द से भरा पृष्ठ है। ")।आप अपने डब्ल्यूपीएफ संसाधनों को बड़ी परियोजनाओं पर कैसे व्यवस्थित कर रहे हैं?

इसके अतिरिक्त, मैं के नामों को नामित करने के लिए एक आसान और यादगार तरीके से आने के लिए संघर्ष कर रहा हूं। सबसे अच्छा तरीका यह है कि मुझे यह लंबा और वर्णनात्मक लगता है, इसलिए मुझे इस तरह की चीजें मिलती हैं: BottomMainLeftScrollViewerStyle, आदि। लेकिन इसकी सीमाएं हैं और जल्द ही भ्रमित हो जाती हैं। मैंने X12ML के पृष्ठों और पृष्ठों में आसानी से उन्हें खोजने के लिए स्टाइल नाम के लिए camelCase का उपयोग करने का निर्णय लिया।

WPF संसाधनों को अनावश्यक होने से रोकने के लिए आपकी रणनीतियां क्या हैं?

<Window.Resources> 

    <local:CutOffConverter x:Key="AgeConverter" Cutoff="30"/> 

    <Style TargetType="Grid" x:Key="customerGridMainStyle"> 
     <Setter Property="Background"> 
      <Setter.Value> 
       <LinearGradientBrush StartPoint="0,0" EndPoint=".5,.5"> 
        <GradientStop Offset="0.0" Color="#888"/> 
        <GradientStop Offset="1.0" Color="#ccc"/> 
       </LinearGradientBrush> 
      </Setter.Value> 
     </Setter> 
    </Style> 

    <Style TargetType="StackPanel" x:Key="mainStackPanelStyle"> 
     <Setter Property="HorizontalAlignment" Value="Left"/> 
    </Style> 
    <Style TargetType="ScrollViewer" x:Key="mainScrollViewerStyle"> 
     <Setter Property="Height" Value="250"/> 
    </Style> 
    <Style TargetType="ListBox" x:Key="mainListBoxStyle"> 
     <Setter Property="BorderThickness" Value="0"/> 
     <Setter Property="Margin" Value="10"/> 
    </Style> 


    <ObjectDataProvider x:Key="customers" 
         ObjectType="{x:Type local:Customer}" 
         MethodName="GetAllCustomers"/> 

    <DataTemplate DataType="{x:Type local:Customer}"> 
     <Grid x:Name="MainGrid" Style="{StaticResource customerGridMainStyle}"> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="100"/> 
       <ColumnDefinition Width="150"/> 
      </Grid.ColumnDefinitions> 
      <Grid.RowDefinitions> 
       <RowDefinition/> 
       <RowDefinition/> 
       <RowDefinition/> 
      </Grid.RowDefinitions> 
      <TextBlock Grid.Column="0" Grid.Row="0" Text="First Name" Margin="5"/> 
      <TextBlock Grid.Column="1" Grid.Row="0" Text="{Binding FirstName}" Margin="5"/> 
      <TextBlock Grid.Column="0" Grid.Row="1" Text="Last Name" Margin="5"/> 
      <TextBlock Grid.Column="1" Grid.Row="1" Text="{Binding LastName}" Margin="5"/> 
      <TextBlock Grid.Column="0" Grid.Row="2" Text="Age" Margin="5"/> 
      <TextBlock x:Name="Age" Grid.Column="1" Grid.Row="2" Text="{Binding Age}" Margin="5"/> 
     </Grid> 
     <DataTemplate.Triggers> 
      <DataTrigger Binding="{Binding Path=Age, Converter={StaticResource AgeConverter}}"> 
       <DataTrigger.Value>true</DataTrigger.Value> 
       <Setter TargetName="Age" Property="Foreground" Value="Red"/> 
      </DataTrigger> 
     </DataTemplate.Triggers> 
    </DataTemplate> 
</Window.Resources> 

उत्तर

15

अलग ResourceDictionary एस का उपयोग करें और आवश्यकतानुसार अपने दृश्य पेड़ में उपयुक्त स्तरों में विलय करें।

<App ...> 
    <App.Resources> 
     <ResourceDictionary> 
      <ResourceDictionary.MergedDictionaries> 
       <ResourceDictionary Source="ListBoxResources.xaml"/> 
       <ResourceDictionary Source="ComboBoxResources.xaml"/> 
       <ResourceDictionary Source="LabelResources.xaml"/> 
       <ResourceDictionary Source="TextBoxResources.xaml"/> 
      </ResourceDictionary.MergedDictionaries> 
      <!-- if you have local resources, place them here. 
       (as noted by Mark Synowiec in the comments) 
      --> 
     </ResourceDictionary> 
    </App.Resources> 
</App> 
+2

बस एक क्विक नोट जोड़ने के लिए, यदि आप भी उपरोक्त के अन्य संसाधनों को जोड़ने के लिए की आवश्यकता होगी, कर रहे हैं, MergedDictionaries अनुभाग के बाद उन्हें जगह ... यानी: । .. बहुत सरल, लेकिन तुरंत स्पष्ट नहीं है। –

+0

"... उन्हें अपने दृश्य पेड़ में उपयुक्त स्तरों में विलय करें ...": इसका क्या अर्थ है? मैं समझता हूं कि App.xaml में मर्ज किए गए शब्दकोश संग्रह में कौन सी लिस्टिंग संसाधन फ़ाइलें हैं। क्या "उपयुक्त स्तर" में कुछ और परिष्कृत है? – Slauma

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

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