StyleSelector.SelectStyle(Object, DependencyObject) Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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
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.