StyleSelector Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Fornece uma forma 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 seguinte mostra como definir um StyleSelector que define um Style para uma linha. Este exemplo define a Background cor de acordo com o índice de linhas.
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 seguinte mostra como definir um ResourceKey para o StyleSelector. O namespc prefixo corresponde a um espaço de nomes CLR e à assembly correspondente onde o StyleSelector está definido. Para mais informações, consulte XAML Namespaces e Namespace Mapping para WPF XAML.
<namespc:ListViewItemStyleSelector x:Key="myStyleSelector"/>
O exemplo seguinte mostra como definir a ItemContainerStyleSelector propriedade de a ListView para 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 um exemplo de como criar um seletor para escolher um recurso de estilo definido, veja a implementação de DataTemplateSelector.SelectTemplate, que permite usar lógica personalizada para selecionar um DataTemplate, com base num conceito semelhante.
Observações
Para criar um StyleSelector que aplique um estilo baseado em lógica personalizada, crie uma subclasse da StyleSelector classe e implemente o SelectStyle método.
Construtores
| Name | Description |
|---|---|
| StyleSelector() |
Inicializa uma nova instância da StyleSelector classe. |
Métodos
| Name | Description |
|---|---|
| Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
| GetHashCode() |
Serve como função de hash predefinida. (Herdado de Object) |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| SelectStyle(Object, DependencyObject) |
Quando sobrescrito numa classe derivada, retorna a Style baseado em lógica personalizada. |
| ToString() |
Devolve uma cadeia que representa o objeto atual. (Herdado de Object) |