Nesne türüyle eşleşen DataTemplate
'u otomatik olarak seçecektir. Bu, @ AndyG'nin yanıtına dayanmaktadır, ancak biraz daha güvenli olduğu için daha güvenlidir. Tip değer
public class DataTypeConverter:IValueConverter
{
public object Convert(object value, Type targetType, object parameter,
CultureInfo culture)
{
return value.GetType();
}
public object ConvertBack(object value, Type targetType, object parameter,
CultureInfo culture)
{
throw new NotImplementedException();
}
}
Converter kullanmak için DataTrigger değiştirin
ve set:
bir nesneyi kabul eder ve (System.Type gibi) Tipi döndüren DataTypeConverter adında bir IValueConverter, Uygulamak
kaynaklarda
<DataTrigger Binding="{Binding SelectedItem,
Converter={StaticResource DataTypeConverter}}"
Value="{x:Type local:MyType}">
...
</DataTrigger>
Declare DataTypeConverter:
<UserControl.Resources>
<v:DataTypeConverter x:Key="DataTypeConverter"></v:DataTypeConverter>
</UserControl.Resources>
+1, ancak dönüştürücü onun adı yerine Type nesnesini döndürmelidir ... –
Bu işe yarar mı? Çalışma zamanı, Type Type türünde bir şey tip String ile karşılaştıramaz mı? Biliyorum çoğu değer türünü dönüştürmeyi/karşılaştırmayı idare ediyor, ancak diğer Tür karşılaştırmaları nasıl kullandığını bilmiyorum. – AndyG
Evet, işe yarar, sadece DataTrigger değerinde {x: Type} işaretleme uzantısını kullanmanız gerekir. –