次の方法で共有


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

次の例は、 の を定義 ResourceKey する方法を StyleSelector示しています。 プレフィックスは namespc 、CLR 名前空間と、 が定義されている対応するアセンブリに StyleSelector マップされます。 詳細については、「 XAML 名前空間」と「WPF 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)

適用対象

こちらもご覧ください