Мелкие проблемы на wpf

WPF
  1. 5 года назад

    Alexandr_Erohin

    Контекст Администратор

    pilik В бд в таблице есть строковое поле с номером телефона в виде 9102221234, как можно в столбце датагрида выводить его в виде (910)222-12-34. Хотел использовать stringFormat = {}{0:\(###\)###\-##\-##} но почему то это не срабатывает (потом вычитал что это сработает если номер хранится как число, а если как строка то stringformat игнорируется.
    Спасибо

    Чтобы не плодить вопросы отмечу вам важное правило, используемое в приложениях WPF: "Если возникает проблема с форматом вывода данных практически всегда приходиться использовать конверторы, т.к. это максимально гибкое средство". Т.е. решение будет аналогично первому вопросу в этой теме, для номера телефона нужно использовать конвертер с регулярным выражением:

    [ValueConversion(typeof(string), typeof(string))]
    public class PhoneParseConverter : IValueConverter
    {
            public object Convert(object value, Type targetType, object parameter,
                System.Globalization.CultureInfo culture)
            {
                if (targetType != typeof(string) || value == null)
                    throw new InvalidOperationException();
    
                string pattern = @"(\d{3})(\d{3})(\d{2})(\d{2})";
                return Regex.Replace((value as string), pattern, "($1)$2-$3-$4");
            }
    
            public object ConvertBack(object value, Type targetType, object parameter,
                System.Globalization.CultureInfo culture)
            {
                throw new NotSupportedException();
            }
     }

    pilik при щелчке на открытом календаре происходит переход к числам, что бы этого не происходило необходимо контролировать событие displaymodechange или что нить подобное, подскажите как добраться до него. и как в поле datepicker отобразить дату в виде "май 2014" (MMMM yyyy)

    Стандартный элемент управления DatePicker не предлагает встроенных средств форматирования даты, для этого нужно будет менять шаблон элемента управления (заодно и настроить поведение, чтобы отображались только месяцы)

  2. Найти это сообщение Alexandr_Erohin Чтобы не плодить вопросы отмечу вам важное правило, используемое в приложениях WPF: "Если возникает проблема с форматом вывода данных практически всегда приходиться использовать конверторы, т.к. это максимально гибкое средство". Т.е. решение будет аналогично первому вопросу в этой теме, для номера телефона нужно использовать конвертер с регулярным выражением:

    Да я боялся использовать конверторы ввиду непонимания как их написать, сейчас все стало довольно прозрачно с их использованием, не могли бы вы еще привести конвертор с несколькими входными параметрами ( типа объединения Фамилии Имени и Отчества в одну строку). Не могу понять как ее написать и использовать, надо ли писать его [конвертор] через multibinding.

    Найти это сообщение Alexandr_Erohin Стандартный элемент управления DatePicker не предлагает встроенных средств форматирования даты, для этого нужно будет менять шаблон элемента управления (заодно и настроить поведение, чтобы отображались только месяцы)

    Потенциально получается проще сделать свой набор компонент из календаря и текстового поля с требуемым выводом, так же через конвертер.
    Спасибо