StyleSelector.SelectStyle(Object, DependencyObject) Metoda
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í.
Při přepsání v odvozené třídě vrátí hodnotu založenou Style na vlastní logice.
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
Parametry
- item
- Object
Obsah.
- container
- DependencyObject
Prvek, na který se styl použije.
Návraty
Vrátí styl specifický pro aplikaci, který se má použít; null
v opačném případě .
Příklady
Následující příklad ukazuje, jak definovat StyleSelector , který definuje Style řá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 ResourceKey pro StyleSelector. Předpona namespc
se mapuje na obor názvů CLR a odpovídající sestavení, kde StyleSelector je definován. Další informace naleznete v tématu Obory názvů XAML a mapování oboru názvů pro WPF XAML.
<namespc:ListViewItemStyleSelector x:Key="myStyleSelector"/>
Následující příklad ukazuje, jak nastavit ItemContainerStyleSelector vlastnost ListView tohoto StyleSelector prostředku.
<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 naleznete v implementaci DataTemplateSelector.SelectTemplate, která umožňuje použít vlastní logiku DataTemplatek výběru , na základě podobného konceptu.
Poznámky
Pokud chcete vytvořit StyleSelector styl založený na vlastní logice, vytvořte podtřídu StyleSelector třídy a implementujte metodu SelectStyle .