Freigeben über


StyleSelector.SelectStyle(Object, DependencyObject) Methode

Definition

Gibt beim Überschreiben in einer abgeleiteten Klasse eine auf benutzerdefinierter Logik basierende Style zurück.

public:
 virtual System::Windows::Style ^ SelectStyle(System::Object ^ item, System::Windows::DependencyObject ^ container);
public virtual System.Windows.Style SelectStyle (object item, System.Windows.DependencyObject container);
abstract member SelectStyle : obj * System.Windows.DependencyObject -> System.Windows.Style
override this.SelectStyle : obj * System.Windows.DependencyObject -> System.Windows.Style
Public Overridable Function SelectStyle (item As Object, container As DependencyObject) As Style

Parameter

item
Object

Der Inhalt.

container
DependencyObject

Das Element, auf das das Format angewendet wird.

Gibt zurück

Style

Gibt ein anwendungsspezifisches Format zurück, das angewendet werden soll, andernfalls null.

Beispiele

Im folgenden Beispiel wird gezeigt, wie Sie ein StyleSelector Objekt definieren, das eine Style Zeile definiert. In diesem Beispiel wird die Background Farbe entsprechend dem Zeilenindex definiert.

public class ListViewItemStyleSelector : StyleSelector
{
    public override Style SelectStyle(object item, 
        DependencyObject container)
    {
        Style st = new Style();
        st.TargetType = typeof(ListViewItem);
        Setter backGroundSetter = new Setter();
        backGroundSetter.Property = ListViewItem.BackgroundProperty;
        ListView listView = 
            ItemsControl.ItemsControlFromItemContainer(container) 
              as ListView;
        int index = 
            listView.ItemContainerGenerator.IndexFromContainer(container);
        if (index % 2 == 0)
        {
            backGroundSetter.Value = Brushes.LightBlue;
        }
        else
        {
            backGroundSetter.Value = Brushes.Beige;
        }
        st.Setters.Add(backGroundSetter);
        return st;
    }
}
Public Class ListViewItemStyleSelector
    Inherits StyleSelector
    Public Overrides Function SelectStyle(ByVal item As Object, ByVal container As DependencyObject) As Style
        Dim st As New Style()
        st.TargetType = GetType(ListViewItem)
        Dim backGroundSetter As New Setter()
        backGroundSetter.Property = ListViewItem.BackgroundProperty
        Dim listView As ListView = TryCast(ItemsControl.ItemsControlFromItemContainer(container), ListView)
        Dim index As Integer = listView.ItemContainerGenerator.IndexFromContainer(container)
        If index Mod 2 = 0 Then
            backGroundSetter.Value = Brushes.LightBlue
        Else
            backGroundSetter.Value = Brushes.Beige
        End If
        st.Setters.Add(backGroundSetter)
        Return st
    End Function
End Class

Das folgende Beispiel zeigt, wie Sie eine ResourceKey für die StyleSelector. Das namespc Präfix wird einem CLR-Namespace und der entsprechenden Assembly zugeordnet, in der dies StyleSelector definiert ist. Weitere Informationen finden Sie unter XAML-Namespaces und Namespacezuordnung für WPF-XAML.

<namespc:ListViewItemStyleSelector x:Key="myStyleSelector"/>

Das folgende Beispiel zeigt, wie Sie die ItemContainerStyleSelector Eigenschaft einer ListView Ressource auf diese StyleSelector Ressource festlegen.

<ListView 
      ItemsSource="{Binding Source={StaticResource EmployeeData}, 
                                        XPath=Employee}"
      ItemContainerStyleSelector="{DynamicResource myStyleSelector}" >      
  <ListView.View>
    <GridView>
      <GridViewColumn DisplayMemberBinding="{Binding XPath=FirstName}" 
                      Header="First Name" Width="120"/>
      <GridViewColumn DisplayMemberBinding="{Binding XPath=LastName}" 
                      Header="Last Name" Width="120"/>
      <GridViewColumn DisplayMemberBinding="{Binding XPath=FavoriteCity}" 
                      Header="Favorite City" Width="120"/>
    </GridView>
  </ListView.View>
</ListView>

Ein Beispiel zum Erstellen einer Auswahl zum Auswählen einer definierten Formatressource finden Sie in der Implementierung von DataTemplateSelector.SelectTemplate, mit der Sie benutzerdefinierte Logik verwenden können, um eine DataTemplateauf einem ähnlichen Konzept basierende Auswahl auszuwählen.

Hinweise

Wenn Sie eine StyleSelector Formatvorlage basierend auf benutzerdefinierter Logik erstellen möchten, erstellen Sie eine Unterklasse der StyleSelector Klasse, und implementieren Sie die SelectStyle Methode.

Gilt für

Siehe auch