StyleSelector.SelectStyle(Object, DependencyObject) Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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 öğ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 .