вы можете использовать такой конвертер:
<TextBlock>
<TextBlock.Text>
<MultiBinding Converter="{StaticResource StringFormatConcatenator}">
<Binding Source="Started {0}"/>
<Binding Source="{x:Static i:Format.DateTime}"/>
<Binding Path="MyDate"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
public class StringFormatConcatenator : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
string format = values[0].ToString();
for (int i = 0; i < (values.Length - 1) / 2; i++)
format = format.Replace("{" + i.ToString() + "}", "{" + i.ToString() + ":" + values[(i * 2) + 1].ToString() + "}");
return string.Format(format, values.Skip(1).Select((s, i) => new { j = i + 1, s }).Where(t => t.j % 2 == 0).Select(t => t.s).ToArray());
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
{
return new string[] { };
}
}
Вы можете добавить столько переменных для форматирования, сколько необходимо, в паре (формат, значение)
Где:
Привязка 0: полный формат без определенного формата переменной ({0: дд-МММ-гггг ЧЧ: мм} заменено на {0})
Нечетное связывание (1,3,5 ...):специфичный для переменной формат («дд-ммм-гггг чч: мм»)
Четность привязки (2,4,6 ...): значение переменной (MyDate)