StyleSelector.SelectStyle(Object, DependencyObject) メソッド

定義

派生クラスでオーバーライドされた場合、カスタム ロジックに基づいた Style を返します。

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

パラメーター

item
Object

コンテンツ。

container
DependencyObject

スタイルの適用対象の要素。

戻り値

Style

アプリケーション固有のスタイルを返します。それ以外の場合は、null を返します。

次の例は、行の a を StyleSelector 定義する a 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"/>

次の例は、a 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

適用対象

こちらもご覧ください