вторник, 13 сентября 2011 г.

Связывание данных – форматируем строки

Одна из наиболее востребованных задач при связывании данных (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 приложений.

Комментариев нет:

Отправить комментарий