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

下列範例示範如何定義 ResourceKeyStyleSelector 。 前置 namespc 詞會對應至 CLR 命名空間,以及定義 所在的對應元件 StyleSelector 。 如需詳細資訊,請參閱 WPF XAML 的 XAML 命名空間和命名空間對應

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

下列範例示範如何將 的 ListView 屬性設定 ItemContainerStyleSelector 為此 StyleSelector 資源。

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

適用於

另請參閱