Condividi tramite


StyleSelector.SelectStyle(Object, DependencyObject) Metodo

Definizione

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

Style

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 .

Si applica a

Vedi anche