Расширенное текстовое поле, обработчик SelectionChanged и MVVM - PullRequest
1 голос
/ 19 декабря 2011

SL 4 приложение.У нас есть RichTextBox (из набора инструментов Silverlight) в большем элементе управления.Когда выделение в текстовом поле изменяется, нам нужно обновить некоторые другие элементы управления на основе форматирования выделения.
Необходимо обновить элементы управления из ViewModel, поэтому мы отправляем сообщение MVVM Light из обработчика SelectionChanged соответствующемуViewModel.

void RichTextBox_SelectionChanged(object sender, RoutedEventArgs e)  
{  
    RichTextBox rtb = sender as RichTextBox;
    if (null != rtb && rtb.Selection.Text.Length > 0)
    {
        Messenger.Default.Send(new UpdateTextFormatUiFromSelectedText() { Xaml = (sender as RichTextBox).Selection.Xaml.ToString()});
    }
}    

К сожалению, после отправки сообщения выделение теряется и курсор перемещается в начало текста.Подпрограмма, которая обрабатывает сообщение UpdateTextFormatUiFromSelectedText, ничего не делает для изменения RTB.
Любое понимание происходящего приветствуется ...

Обновление: если Messenger.Default.Send ()не вызывается, RTB ведет себя как ожидалось.

...