StyleSelector Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Fornece uma maneira de aplicar estilos baseados em lógica personalizada.
public ref class StyleSelector
public class StyleSelector
type StyleSelector = class
Public Class StyleSelector
- Herança
-
StyleSelector
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.
Construtores
StyleSelector() |
Inicializa uma nova instância da classe StyleSelector. |
Métodos
Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
GetHashCode() |
Serve como a função de hash padrão. (Herdado de Object) |
GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
MemberwiseClone() |
Cria uma cópia superficial do Object atual. (Herdado de Object) |
SelectStyle(Object, DependencyObject) |
Quando substituído em uma classe derivada, retorna um Style com base em lógica personalizada. |
ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object) |