Sdílet prostřednictvím


StyleSelector.SelectStyle(Object, DependencyObject) Metoda

Definice

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

Style

Vrátí styl specifický pro aplikaci, který se má použít; nullv 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 .

Platí pro

Viz také