StyleSelector.SelectStyle(Object, DependencyObject) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Gibt beim Überschreiben in einer abgeleiteten Klasse eine auf benutzerdefinierter Logik basierende Style zurück.
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
Parameter
- item
- Object
Der Inhalt.
- container
- DependencyObject
Das Element, auf das das Format angewendet wird.
Gibt zurück
Gibt ein anwendungsspezifisches Format zurück, das angewendet werden soll, andernfalls null
.
Beispiele
Im folgenden Beispiel wird gezeigt, wie Sie ein StyleSelector Objekt definieren, das eine Style Zeile definiert. In diesem Beispiel wird die Background Farbe entsprechend dem Zeilenindex definiert.
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
Das folgende Beispiel zeigt, wie Sie eine ResourceKey für die StyleSelector. Das namespc
Präfix wird einem CLR-Namespace und der entsprechenden Assembly zugeordnet, in der dies StyleSelector definiert ist. Weitere Informationen finden Sie unter XAML-Namespaces und Namespacezuordnung für WPF-XAML.
<namespc:ListViewItemStyleSelector x:Key="myStyleSelector"/>
Das folgende Beispiel zeigt, wie Sie die ItemContainerStyleSelector Eigenschaft einer ListView Ressource auf diese StyleSelector Ressource festlegen.
<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>
Ein Beispiel zum Erstellen einer Auswahl zum Auswählen einer definierten Formatressource finden Sie in der Implementierung von DataTemplateSelector.SelectTemplate, mit der Sie benutzerdefinierte Logik verwenden können, um eine DataTemplateauf einem ähnlichen Konzept basierende Auswahl auszuwählen.
Hinweise
Wenn Sie eine StyleSelector Formatvorlage basierend auf benutzerdefinierter Logik erstellen möchten, erstellen Sie eine Unterklasse der StyleSelector Klasse, und implementieren Sie die SelectStyle Methode.