2010-12-18 17 views
0

Ich habe einen Stil in meiner Ressource-Datei definiert wie unterSilverlight Listbox benutzerdefinierter Stil

<Style x:Name="ListBoxStyle" TargetType="ListBox" > 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="ListBox">      
       <StackPanel Orientation="Horizontal"> 
        <TextBlock Text="{Binding Name,Mode=TwoWay}" 
           Margin="5" 
           Foreground="Red"> 
        </TextBlock> 
        <TextBlock Text="{Binding Age,Mode=TwoWay}" 
           Margin="5"> 
        </TextBlock> 
       </StackPanel> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter>  
</Style> 

ich ratlos bin, was hier in der Datenvorlage zu setzen

<ListBox x:Name="MyList" ItemsSource="{Binding }"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

ich versuchte, mit

<ContentPresenter Style="{StaticResource ListBoxStyle}"></ContentPresenter> 

und sogar

<ContentControl Style="{StaticResource ListBoxStyle}"></ContentControl>` 

aber habe diesen Fehler

fehlgeschlagen Eigenschaft 'System.Windows.FrameworkElement.Style' zuzuordnen.

Was kann ich zwischen den Tags DataTemplate einfügen, wenn ich einen benutzerdefinierten Stil bereitstellen möchte?

+0

Was möchten Sie erreichen? Sie haben einen Stil für "ListBox" definiert und versuchen ihn auf "ContentPresenter" und "ContentControl" anzuwenden. Das ist nicht richtig. – decyclone

+0

Ich möchte den Stil für die Listbox in einer anderen Ressourcendatei definieren und in meiner page.xaml nur auf diesen Stil verweisen. Was ist der richtige Weg? – user20358

Antwort

0

Versuchen:

<ListBox x:Name="MyList" ItemsSource="{Binding }"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
<StackPanel Orientation="Horizontal"> 
        <TextBlock Text="{Binding Name,Mode=TwoWay}" 
           Margin="5" 
           Foreground="Red"> 
        </TextBlock> 
        <TextBlock Text="{Binding Age,Mode=TwoWay}" 
           Margin="5"> 
        </TextBlock> 
       </StackPanel> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

Dieses shpuld Ihr Problem zu lösen.

Wenn Sie einen Stil definieren, definieren Sie, wie die ListBox aussieht (Hintergrund, Vordergrund, ...). Sie können den Standard-Stil hier erhalten: http: //msdn.microsoft.com/en-us/library/cc278062 (v = vs.95) .aspx

Die ItemTemplate (es ist eine DataTemplate) definiert, wie a Die Datenpräsentation eines einzelnen Elementes der Liste sieht so aus (Sie verwenden Bindings und so weiter ...).

Wenn Sie einen Stil für die einzelnen Elemente wie MouseOver, Focussed, ... definieren möchten, schreiben Sie einen Stil für die ListBoxItems. Sie können es über ItemContainerStyle zum Listenfeld hinzufügen.

<ListBox ItemContainerStyle="{StaticResource YourResourceKey}"/> 
Verwandte Themen