Это основано на ответе @AndyG, но немного безопаснее, потому что оно строго типизировано.
Реализуйте IValueConverter с именем DataTypeConverter, который принимает объект и возвращает его тип (как System.Type):
public class DataTypeConverter:IValueConverter
{
public object Convert(object value, Type targetType, object parameter,
CultureInfo culture)
{
return value?.GetType() ?? Binding.DoNothing;
}
public object ConvertBack(object value, Type targetType, object parameter,
CultureInfo culture)
{
throw new NotImplementedException();
}
}
Измените свой DataTrigger, чтобы использовать Converter, и установите значение Type:
<DataTrigger Binding="{Binding SelectedItem,
Converter={StaticResource DataTypeConverter}}"
Value="{x:Type local:MyType}">
...
</DataTrigger>
Объявите DataTypeConverter в ресурсах:
<UserControl.Resources>
<v:DataTypeConverter x:Key="DataTypeConverter"></v:DataTypeConverter>
</UserControl.Resources>
person
Greg Sansom
schedule
11.02.2011