Compartilhar via


StyleSelector.SelectStyle(Object, DependencyObject) Método

Definição

Quando substituído em uma classe derivada, retorna um Style com base em lógica personalizada.

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

Parâmetros

item
Object

O conteúdo.

container
DependencyObject

O elemento ao qual o estilo será aplicado.

Retornos

Style

Retorna um estilo específico do aplicativo a ser aplicado; caso contrário, null.

Exemplos

O exemplo a seguir mostra como definir um StyleSelector que define uma Style linha. Este exemplo define a Background cor de acordo com o índice de linha.

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

O exemplo a seguir mostra como definir um ResourceKey para o StyleSelector. O namespc prefixo é mapeado para um namespace CLR e o assembly correspondente em que o StyleSelector valor é definido. Para obter mais informações, consulte Namespaces XAML e Mapeamento de Namespace para WPF XAML.

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

O exemplo a seguir mostra como definir a ItemContainerStyleSelector propriedade de um ListView para esse StyleSelector recurso.

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

Para obter um exemplo de como criar um seletor para escolher um recurso de estilo definido, consulte a implementação de DataTemplateSelector.SelectTemplate, que permite que você use a lógica personalizada para selecionar um DataTemplate, com base em um conceito semelhante.

Comentários

Para criar um StyleSelector que aplique um estilo com base na lógica personalizada, crie uma subclasse da StyleSelector classe e implemente o SelectStyle método.

Aplica-se a

Confira também