2010-11-07 1 views
0

Я новичок в WPF. Мне нужно сделать привязку TwoWay и OneWayToSource к строковой переменной. Я хочу использовать richtextbox из Extended WPF Toolkit, потому что я думаю, что это простой способ.Расширенные WPF Toolkit - Binding Text of richtextbox

Поэтому я стараюсь использовать richtebox из этой библиотеки в XAML, код здесь:

<Window x:Class="PokecMessanger.ChatWindow" 
     xmlns:extToolkit="clr-namespace:Microsoft.Windows.Controls;assembly=WPFToolkit.Extended" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="ChatWindow" Height="429" Width="924"> 

///... 

     <extToolkit:RichTextBox Name="rtbRpText" Text="{Binding _rpText, Mode=OneWayToSource}" Grid.Column="0"></extToolkit:RichTextBox> 

В коде позади, у меня есть этот код:

private string _rpText = string.Empty; 

    public ChatWindow(PokecCommands pokecCmd) 
    { 
     rtbRpText.DataContext = _rpText; 
    } 

Проблема, если я написал что-то в richtextbox, переменная _rpText по-прежнему пуста, где может быть проблема?

ответ

1

Вы пробовали набирать что-то, а затем смещали фокус с RichTextBox? Я подозреваю, что ваше имущество будет обновлено. Если вы хотите обновить свойство по мере ввода, вам понадобятся:

Text="{Binding _rpText, Mode=OneWayToSource, UpdateSourceTrigger=PropertyChanged}" 
+0

это не работает, я связываю свойство текста RichTextBox переменной строки, ни в свойстве строки, ваша работа решение только тогда, когда я привязать к струнной собственности класса, реализующего INotifyPropertyChanged. – Joe

+2

Как вы ожидаете, что он будет работать, если нет уведомлений об изменении свойств? –

+0

Сори, я не знаю. Таким образом, этот интерфейс является условием. – Joe

0

Kent правильный. Ваши свойства ДОЛЖНЫ внедрить интерфейс INotifyPropertyChanged для привязки данных для правильной работы в WPF/Silverlight.

documentation объясняет, как связать свою собственность в RichTextBox: