StyleSelector 类

定义

提供根据自定义逻辑应用样式的方法。

public ref class StyleSelector
public class StyleSelector
type StyleSelector = class
Public Class StyleSelector
继承
StyleSelector

示例

以下示例演示如何定义 StyleSelector 为行定义 的 Style 。 此示例根据行索引定义 Background 颜色。

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

以下示例演示如何为 StyleSelector定义 ResourceKey 。 前缀 namespc 映射到 CLR 命名空间和定义 的 StyleSelector 相应程序集。 有关详细信息,请参阅 XAML 命名空间和 WPF XAML 的命名空间映射

<namespc:ListViewItemStyleSelector x:Key="myStyleSelector"/>

以下示例演示如何将 的 ListView 属性设置为ItemContainerStyleSelectorStyleSelector资源。

<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>

有关如何创建选择器以选择定义的样式资源的示例,请参阅 的 DataTemplateSelector.SelectTemplate实现,它允许你根据类似的概念使用自定义逻辑来选择 DataTemplate

注解

若要创建 StyleSelector 基于自定义逻辑应用样式的 ,请创建 类的 StyleSelector 子类并实现 SelectStyle 方法。

构造函数

StyleSelector()

初始化 StyleSelector 类的新实例。

方法

Equals(Object)

确定指定对象是否等于当前对象。

(继承自 Object)
GetHashCode()

作为默认哈希函数。

(继承自 Object)
GetType()

获取当前实例的 Type

(继承自 Object)
MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
SelectStyle(Object, DependencyObject)

当在派生类中重写时,返回基于自定义逻辑的 Style

ToString()

返回表示当前对象的字符串。

(继承自 Object)

适用于

另请参阅