StyleSelector 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
提供根据自定义逻辑应用样式的方法。
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
以下示例演示如何为 StyleSelector定义 ResourceKey 。 前缀 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) |