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" и "Сопоставление пространств имен" для XAML WPF.

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

В следующем примере показано, как задать ItemContainerStyleSelector для этого StyleSelector ресурса свойствоListView.

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

Применяется к

См. также раздел