Создайте конвертер, который реализует IMultiValueConverter, затем используйте MultiBinding для текста, чтобы у вас был только один TextBlock с каждой строкой, как это:
class MultiStringConverter : IMultiValueConverter
{
public object Convert( object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture )
{
var text = new StringBuilder( );
for ( int i = 0 ; i < values.Length ; i++ ) {
string line = String.Format( "{0}", values[i] );
if ( !String.IsNullOrEmpty( line ) ) {
text.AppendLine( line );
} // if
}
return text.ToString( );
}
public object[] ConvertBack( object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture )
{
throw new NotImplementedException( );
}
}
А в XAML ...
<TextBlock>
<TextBlock.Text>
<MultiBinding>
<MultiBinding.Converter>
<Local:MultiStringConverter />
</MultiBinding.Converter>
<Binding Path="AddressLine1" />
<Binding Path="AddressLine2" />
<Binding Path="AddressLine3" />
<Binding Path="AddressLine4" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>