StyleSelector Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Poskytuje způsob, jak použít styly založené na vlastní logice.
public ref class StyleSelector
public class StyleSelector
type StyleSelector = class
Public Class StyleSelector
- Dědičnost
-
StyleSelector
Příklady
Následující příklad ukazuje, jak definovat StyleSelector , který definuje Style pro řádek. Tento příklad definuje Background barvu podle indexu řádku.
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
Následující příklad ukazuje, jak definovat pro ResourceKeyStyleSelector. Předpona se namespc
mapuje na obor názvů CLR a odpovídající sestavení, kde StyleSelector je definován. Další informace najdete v tématu Obory názvů XAML a mapování oborů názvů pro WPF XAML.
<namespc:ListViewItemStyleSelector x:Key="myStyleSelector"/>
Následující příklad ukazuje, jak nastavit ItemContainerStyleSelector vlastnost objektu na ListView tento StyleSelector prostředek.
<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>
Příklad vytvoření selektoru pro výběr definovaného prostředku stylu najdete v implementaci DataTemplateSelector.SelectTemplatenástroje , který umožňuje použít vlastní logiku k výběru objektu DataTemplatena základě podobného konceptu.
Poznámky
Chcete-li vytvořit StyleSelector , který použije styl založený na vlastní logice, vytvořte podtřídu StyleSelector třídy a implementujte metodu SelectStyle .
Konstruktory
StyleSelector() |
Inicializuje novou instanci StyleSelector třídy. |
Metody
Equals(Object) |
Určí, zda se zadaný objekt rovná aktuálnímu objektu. (Zděděno od Object) |
GetHashCode() |
Slouží jako výchozí hashovací funkce. (Zděděno od Object) |
GetType() |
Získá aktuální Type instanci. (Zděděno od Object) |
MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Objectsouboru . (Zděděno od Object) |
SelectStyle(Object, DependencyObject) |
Při přepsání v odvozené třídě vrátí hodnotu Style na základě vlastní logiky. |
ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |