Эту проблему можно решить, написав конвертер значений.
[ValueConversion(typeof(Person), typeof(String))]
public class PersonNameConverter: IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
Person person = value as Person;
if(person == null)
{
return "(none)";
}
else
{
return person.Name;
}
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
Создав его, вы можете добавить его в качестве ресурса в XAML:
<local:PersonNameConverter x:Key="PersonNameConverter"/>
Затемэто может быть включено как один из параметров привязки
<TextBlock
Text="{Binding Path=ThePerson, Converter={StaticResource PersonNameConverter}}"
/>