StyleSelector.SelectStyle(Object, DependencyObject) Método

Definición

Si se reemplaza en una clase derivada, devuelve un valor Style basado en una 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

Contenido.

container
DependencyObject

Elemento al que se aplicará el estilo.

Devoluciones

Style

Devuelve un estilo específico de la aplicación; de lo contrario, null.

Ejemplos

En el ejemplo siguiente se muestra cómo definir un StyleSelector objeto que define para Style una fila. En este ejemplo se define el Background color según el índice de fila.

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

En el ejemplo siguiente se muestra cómo definir un ResourceKey para .StyleSelector El namespc prefijo se asigna a un espacio de nombres CLR y al ensamblado correspondiente donde se define .StyleSelector Para obtener más información, vea Espacios de nombres XAML y Asignación de espacios de nombres para XAML de WPF.

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

En el ejemplo siguiente se muestra cómo establecer la ItemContainerStyleSelector propiedad de en ListView este 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 obtener un ejemplo de cómo crear un selector para elegir un recurso de estilo definido, vea la implementación de DataTemplateSelector.SelectTemplate, que permite usar lógica personalizada para seleccionar un DataTemplate, en función de un concepto similar.

Comentarios

Para crear un StyleSelector objeto que aplique un estilo basado en la lógica personalizada, cree una subclase de la StyleSelector clase e implemente el SelectStyle método .

Se aplica a

Consulte también