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