Freigeben über


StyleSelector.SelectStyle(Object, DependencyObject) Methode

Definition

Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird eine Style basierend auf benutzerdefinierter Logik zurückgegeben.

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 die Formatvorlage angewendet wird.

Gibt zurück

Gibt eine anwendungsspezifische Formatvorlage zurück, die angewendet werden soll; andernfalls . null

Beispiele

Im folgenden Beispiel wird gezeigt, wie Sie eine StyleSelector Zeile definieren, die eine Style Zeile definiert. In diesem Beispiel wird die Background Farbe gemäß 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 die StyleSelector Datei 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 die ItemContainerStyleSelector Eigenschaft einer ListView Ressource auf diese StyleSelector Ressource festgelegt wird.

<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 Selektor zum Auswählen einer definierten Formatressource finden Sie in der Implementierung von DataTemplateSelector.SelectTemplate, mit der Sie benutzerdefinierte Logik verwenden können, um ein DataTemplate, basierend auf einem ähnlichen Konzept, auszuwählen.

Hinweise

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

Gilt für:

Weitere Informationen