Aracılığıyla paylaş


StyleSelector.SelectStyle(Object, DependencyObject) Yöntem

Tanım

Türetilmiş bir sınıfta geçersiz kılındığında, özel mantığı temel alan bir Style döndürür.

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

Parametreler

item
Object

İçerik.

container
DependencyObject

Stilin uygulanacağı öğe.

Döndürülenler

Style

Uygulanacak uygulamaya özgü bir stil döndürür; aksi takdirde , null.

Örnekler

Aşağıdaki örnekte, bir satır için öğesini StyleSelector tanımlayan bir Style öğesinin nasıl tanımlanacağı gösterilmektedir. Bu örnek, Background satır dizinine göre rengi tanımlar.

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

Aşağıdaki örnekte için nasıl tanımlanacağı ResourceKey gösterilmektedir StyleSelector. Ön namespc ek bir CLR ad alanıyla ve öğesinin tanımlandığı karşılık gelen derlemeyle StyleSelector eşler. Daha fazla bilgi için bkz . WPF XAML için XAML Ad Alanları ve Ad Alanı Eşlemesi.

<namespc:ListViewItemStyleSelector x:Key="myStyleSelector"/>

Aşağıdaki örnekte, özelliğinin ItemContainerStyleSelector ListView bu StyleSelector kaynağa nasıl ayarlanacağı gösterilmektedir.

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

Tanımlı stil kaynağı seçmek için seçici oluşturma örneği için, benzer bir kavram temelinde bir seçmek DataTemplateiçin özel mantık kullanmanıza olanak tanıyan uygulamasına DataTemplateSelector.SelectTemplatebakın.

Açıklamalar

Özel mantığı temel alan bir stil uygulayan bir oluşturmak StyleSelector için sınıfının bir alt sınıfını StyleSelector oluşturun ve yöntemini uygulayın SelectStyle .

Şunlara uygulanır

Ayrıca bkz.