Как преобразовать или применить преобразования к строке, привязанной к столбцу gridview в WPF - PullRequest
2 голосов
/ 29 марта 2012

Как я уже упоминал в недавнем вопросе о том, как показывать строки с возвратом каретки в виде сетки , я также задумался о том, как по-разному отформатировать эту строку на лету.

Строка, возвращающаяся из базы данных, имеет возврат каретки. Затем он напрямую связывается с GridViewColumn следующим образом:

<GridViewColumn Width="365" Header="Desc" DisplayMemberBinding="{Binding desc}" />

Скажем, я хочу удалить эти возвраты каретки, используя String.Replace, но без изменения DataTable, с которым связан gridview.

Раньше я делал нечто подобное в ASP.net с помощью метода Repeater.OnItemDataBound , применяя форматирование или тому подобное.

Ответы [ 2 ]

2 голосов
/ 29 марта 2012

Вам потребуется создать преобразователь значений:

[ValueConversion(typeof(string), typeof(string))]
public class ReplaceCarriageReturnConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        return value as string == null ? string.Empty : (value as string).Replace("\r", " - "); ;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

Объявите ваш преобразователь:

<local:ReplaceCarriageReturnConverter x:Key="ReplaceCarriageReturnConverter"/>

Измените привязку:

<GridViewColumn Width="365" Header="Desc" DisplayMemberBinding="{Binding desc, Converter={StaticResource ReplaceCarriageReturnConverter}}" />
0 голосов
/ 29 марта 2012

Вы можете использовать ValueConverter для вашей привязки.См. Документацию по MSDN здесь:

http://msdn.microsoft.com/en-us/library/system.windows.data.ivalueconverter.aspx

По сути, вы создаете класс, реализующий IValueConverter, а в методе Convert вы конвертируете строку так же, каквам нравится (уберите возврат каретки в вашем случае).

Если этот преобразователь добавлен в вашу привязку (подробности см. В ссылке), ваш GridViewColumn будет отображать значение, возвращаемое вашим ValueConverter.
Поскольку значение изменяется только до его отображения, ваша DataTable не будетполучить изменение.

Вот учебник по использованию ValueConverters:

http://wpftutorial.net/ValueConverters.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...