Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > WPF и Silverlight > Как привязать TextBox к StringBuilder


Автор: ДобренькийПапаша 27.5.2011, 13:29
Может кто пример кода кинуть? А то я погуглил и что-то не нашёл ничего вразумительного.

Автор: likegift 27.5.2011, 13:54
Цитата(ДобренькийПапаша @ 27.5.2011,  16:29)
я погуглил и что-то не нашёл ничего вразумительного.

ну, с такой то формулировкой вопроса это не удивляет

Автор: ДобренькийПапаша 27.5.2011, 20:10
А что здесь неясного - надо прикрутить TextBox.Text к объекту StringBuilder. Что здесь не так сформулировано?

Автор: -Mikle- 27.5.2011, 20:39
эм... прикрутить, это как?
Ведь не new StringBuilder(textBox1.Text) имеется ввиду? Через биндинг? Лучше опиши свое окружение. Где, что и как, ведь "прикрутить" по разному можно понять и по разному сделать.

Автор: under_sun 27.5.2011, 20:53
В биндинге можешь конвертер использовать.
Код

[ValueConversion(typeof(StringBuilder), typeof(String))]
public class StrConverter : IValueConverter
{
    public object Convert( object value, Type targetType, object parameter, CultureInfo culture )
    {
        if ( value is StringBuilder )
        {
            return value.ToString();
        }
        return value;
    }

    public object ConvertBack( object value, Type targetType, object parameter, CultureInfo culture )
    {
        if ( value is String )
        {
            return new StringBuilder( (string) value );
        }
        return value;
    }
}


Автор: DenWPF 28.5.2011, 11:25
Но это очень не хорошо вообще делать. не помню точно, но после value.ToString(). StringBuilder - уже что то теряет, и при повторном к нему обращению будет выделятся новая память.

Автор: under_sun 28.5.2011, 19:03
Цитата(DenWPF @  28.5.2011,  13:25 Найти цитируемый пост)
Но это очень не хорошо вообще делать. не помню точно, но после value.ToString(). StringBuilder - уже что то теряет, и при повторном к нему обращению будет выделятся новая память. 

Все это издержки реализации класса StringBuilder. И если так делать не хорошо, то может есть другой способ, как получить строку из StringBuilder? 

Автор: ДобренькийПапаша 28.5.2011, 21:53
Да, через Binding. Интересовало как сделать через Binding.

Автор: under_sun 29.5.2011, 11:15
Цитата(ДобренькийПапаша @  28.5.2011,  23:53 Найти цитируемый пост)
Интересовало как сделать через Binding. 

Я же выше написал, как можно сделать через биндинг.
Код

//В ресурсах пишешь
<StrConverter x:Key="cnv" />
...
<TextBox Text="{Binding ..., Converter={StaticResource cnv}}" />

А вообще не понятно, зачем биндить StringBuilder. Ведь StringBuilder нужен для эффективного создания строк. Сформировал строку в StringBuilder, преобразовал в обычный String и отобразил.

Автор: DenWPF 29.5.2011, 21:19
и думаю без конверта, сделать гет который возращает string т.е stringBuilder.toString() и к этому гету биндишь

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)