Partager via


StyleSelector.SelectStyle(Object, DependencyObject) Méthode

Définition

En cas de substitution dans une classe dérivée, retourne un Style basé sur la logique personnalisée.

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

Paramètres

item
Object

Contenu.

container
DependencyObject

Élément auquel le style sera appliqué.

Retours

Style

Retourne un style à appliquer selon l'application ou la valeur null.

Exemples

L’exemple suivant montre comment définir un qui définit une StyleSelector Style ligne. Cet exemple définit la Background couleur en fonction de l’index de ligne.

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

L’exemple suivant montre comment définir un ResourceKey pour le StyleSelector. Le namespc préfixe est mappé à un espace de noms CLR et à l’assembly correspondant où il StyleSelector est défini. Pour plus d’informations, consultez Espaces de noms XAML et mappage d’espaces de noms pour XAML WPF.

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

L’exemple suivant montre comment définir la ItemContainerStyleSelector propriété d’une ListView sur cette StyleSelector ressource.

<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>

Pour obtenir un exemple de création d’un sélecteur pour choisir une ressource de style définie, consultez l’implémentation de DataTemplateSelector.SelectTemplate, qui vous permet d’utiliser une logique personnalisée pour sélectionner un DataTemplate, en fonction d’un concept similaire.

Remarques

Pour créer StyleSelector un style basé sur une logique personnalisée, créez une sous-classe de la StyleSelector classe et implémentez la SelectStyle méthode.

S’applique à

Voir aussi