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"/>
В следующем примере показано, как задать ItemContainerStyleSelector свойство ListView этого 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) |