2016-05-24 8 views
1

ich ein Gitter voller Labels, die alle den gleichen Stil verwenden, der ein Dynamic ist:Nehmen gleichen dynamischen Stil auf alle Elemente der gleichen Art in Gitter

<Label Grid.Row="0" Style="{DynamicResource MyStyle}"/> 
<Label Grid.Row="1" Style="{DynamicResource MyStyle}"/> 
<Label Grid.Row="2" Style="{DynamicResource MyStyle}"/> 

Gibt es eine Möglichkeit nur auf den Stil einmal gesetzt für alle Etiketten im Raster? Ich habe es versucht this way, aber BasedOn funktioniert nicht mit DynamicResources.

+0

Fügen Sie das Wörterbuch in Ihr 'UC' oder' Window' ein und bezeichnen Sie es als 'StaticResource', oder legen Sie den Stil für Label fest so' 'Style TargetType =" {x: Type Label} "> .. code '. – XAMlMAX

+0

@XAMlMAX: Sie meinen das MergedDictionary aus meiner App.xaml? Wie lege ich das in meine UC? – gartenriese

Antwort

1

Eine Möglichkeit, es zu tun ist MergedDictionaries zu verwenden wie so:

<UserControl.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="/assemblyName;component/yourStyle.xaml"/> 
     </ResourceDictionary.MergedDictionaries> 
     <!--If you want to include additional resources you need to place them here--> 
     <SolidColorBrush x:Key="TextBox.Static.Border" Color="#FFABAdB3"/> 
    </ResourceDictionary> 
</UserControl.Resources> 

Dann in Ihrem Grid Sie es wie so verwenden können:

<Grid> 
    <Grid.Resources><!-- This will only use the style in the Grid--> 
     <Style TargetType="Label" BasedOn="{StaticResource MyStyle}"/> 
    </Grid.Resources> 
</Grid> 

Und das sollte jetzt Ihren Style nur für das Grid oder Label woverwenden.

+0

Das funktioniert. Es scheint auch, dass es ausreicht, das MergedDictionary in der App.xaml anstelle von UserControl zu haben. Hat das irgendwelche Nebenwirkungen? – gartenriese

+0

@gartenriese Um ehrlich zu sein habe ich das nie ausprobiert und von dem, was ich sagen kann, sind Ihre EXE und Ihre UC's in einer separaten Versammlung. Was VS verwendest du? – XAMlMAX

+0

Ich verwende Stile aus einer anderen Assembly, aber die App.xaml und das UserControl befinden sich im selben Projekt. Ich benutze VS2013. – gartenriese

0

Sie können wie etwas tun:

<Window.Resources> 

    <Style TargetType="Label"> 

    ... 

    </Style> 

    </Window.Resources> 
+0

Was setze ich an die Stelle der drei Punkte? – gartenriese

+0

Der Stil, den Sie in "MyStyle" gemacht haben. –

+0

Der Stil ist in einer anderen Baugruppe. – gartenriese

Verwandte Themen