Одна из наиболее востребованных задач при связывании данных (Binding) – это вывод с использованием форматирования. К сожалению, стандартные средства связывания данных не предлагают средств для этого. Однако простенький конвертер помогает решить эту проблему.
Класс конвертера объявляется так:
/// <summary>
/// Форматирует объект с помощью заданной строки формата
/// </summary>
public class FormatStringConverter : IValueConverter
{
/// <summary>
/// строка форматирования
/// </summary>
public string FormatString { get; set; }
#region IValueConverter Members
/// <summary>
/// Форматирует объект с помощью заданной строки формата FormatString
/// </summary>
/// <param name="value">Значение любого типа, которое требуется форматировать</param>
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value == null)
return String.Empty;
if (String.IsNullOrEmpty(FormatString))
return value.ToString();
return String.Format(CultureInfo.CurrentCulture, FormatString, value);
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
#endregion
}
Строка форматирования указывается в качестве свойства объекта-конвертера при его объявлении в ресурсах:
<FormatStringConverter x:Key="loginTitleConverter" FormatString="Login:{0}" />
Для использования конвертера нужно просто указать его в при объявлении привязки:
<TextBlock Text="{Binding Login, Converter={StaticResource loginTitleConverter}}" />
Объявление строк для форматирования вывода в XAML дает возможность использовать технологию локализации WPF приложений.
Комментариев нет:
Отправить комментарий