Unfortunately silverlight is missing a few pieces that WPF has that can handle this. I would probably go the route of using a value converter that you can pass the class that contains the Title and Author to format the text.
Here's the code:
public class TitleAuthorConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (!(value is Book)) throw new NotSupportedException();
Book b = value as Book;
return b.Title + " - " + b.Author;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
public class Book
{
public string Title { get; set; }
public string Author { get; set; }
}
And some XAML:
<Grid x:Name="LayoutRoot" Background="White">
<Grid.Resources>
<local:Book Title="Some Book" Author="Some Author" x:Key="MyBook"/>
<local:TitleAuthorConverter x:Key="Converter"/>
</Grid.Resources>
<TextBlock DataContext="{StaticResource MyBook}" Text="{Binding Converter={StaticResource Converter}}"/>
</Grid>
The downside to this way is that you won't get the text to update if the properties change (ie you implement INotifyPropertyChanged) since the field is bound to the class.
As suggested in the comments on the question, you could also create a third property that combines them. This would get around having to use multibindings or value converters.