StyleSelector.SelectStyle(Object, DependencyObject) Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
In caso di override in una classe derivata, restituisce un oggetto Style basato sulla logica personalizzata.
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
Parametri
- item
- Object
Il contenuto.
- container
- DependencyObject
L'elemento al quale sarà applicato lo stile.
Restituisce
Restituisce un stile specifico dell'applicazione da applicare; in caso contrario null
.
Esempio
Nell'esempio seguente viene illustrato come definire un StyleSelector oggetto che definisce un Style oggetto per una riga. In questo esempio viene definito il Background colore in base all'indice di riga.
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
Nell'esempio seguente viene illustrato come definire un ResourceKey oggetto per .StyleSelector Il namespc
prefisso esegue il mapping a uno spazio dei nomi CLR e all'assembly corrispondente in cui è definito .StyleSelector Per altre informazioni, vedere Spazi dei nomi XAML e Mapping dello spazio dei nomi per XAML WPF.
<namespc:ListViewItemStyleSelector x:Key="myStyleSelector"/>
Nell'esempio seguente viene illustrato come impostare la ItemContainerStyleSelector proprietà di un oggetto ListView su questa StyleSelector risorsa.
<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>
Per un esempio di come creare un selettore per scegliere una risorsa di stile definita, vedere l'implementazione di DataTemplateSelector.SelectTemplate, che consente di usare la logica personalizzata per selezionare un DataTemplateoggetto , in base a un concetto simile.
Commenti
Per creare un StyleSelector oggetto che applica uno stile basato sulla logica personalizzata, creare una sottoclasse della StyleSelector classe e implementare il SelectStyle metodo .