StyleSelector.SelectStyle(Object, DependencyObject) Methode

Definitie

Wanneer deze wordt overschreven in een afgeleide klasse, wordt een Style resultaat geretourneerd op basis van aangepaste logica.

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

Parameters

item
Object

De inhoud.

container
DependencyObject

Het element waarop de stijl wordt toegepast.

Retouren

Hiermee wordt een toepassingsspecifieke stijl geretourneerd die moet worden toegepast; anders, null.

Voorbeelden

In het volgende voorbeeld ziet u hoe u een StyleSelector voor een rij definieert Style . In dit voorbeeld wordt de Background kleur gedefinieerd op basis van de rijindex.

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

In het volgende voorbeeld ziet u hoe u een ResourceKey voor de StyleSelector. Het namespc voorvoegsel wordt toegewezen aan een CLR-naamruimte en de bijbehorende assembly waarin het StyleSelector is gedefinieerd. Zie XAML-naamruimten en naamruimtetoewijzingen voor WPF XAML voor meer informatie.

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

In het volgende voorbeeld ziet u hoe u de ItemContainerStyleSelector eigenschap van een ListView resource instelt op deze StyleSelector resource.

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

Voor een voorbeeld van het maken van een selector om een gedefinieerde stijlresource te kiezen, raadpleegt u de implementatie van DataTemplateSelector.SelectTemplate, waarmee u aangepaste logica kunt gebruiken om een DataTemplate, op basis van een vergelijkbaar concept te selecteren.

Opmerkingen

Als u een StyleSelector stijl wilt maken die een stijl toepast op basis van aangepaste logica, maakt u een subklasse van de StyleSelector klasse en implementeert u de SelectStyle methode.

Van toepassing op

Zie ook