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

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

Örnekler

Aşağıdaki örnekte, bir satır için tanımlayan bir Style öğesinin nasıl tanımlanacağı StyleSelector gösterilmektedir. Bu örnek, Background rengi satır dizinine göre 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ına ve öğesinin tanımlandığı karşılık gelen derlemeye 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, bir ListView özelliğinin ItemContainerStyleSelector 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ı bir 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.