Я дал ответ на вопрос об установке фокуса на конкретный элемент управления с помощью Caliburns IResult
здесь . Вы должны иметь возможность использовать ту же концепцию, чтобы овладеть RichTextBox
, чтобы вызвать ScrollToEnd
. Я не буду дублировать все объяснение здесь, перейдите к этому вопросу для идей, но следующая реализация IResult
(в качестве руководства) должна поставить вас на правильный путь.
public class RichTextBoxScrollToEnd : ResultBase
{
public RichTextBoxScrollToEnd()
{
}
public override void Execute(ActionExecutionContext context)
{
var view = context.View as UserControl;
List<Control> richTextBoxes =
view.GetChildrenByType<Control>(c => c is RichTextBox);
var richTextBox = richTextBoxes.FirstOrDefault();
if (richTextBox != null)
richTextBox.Dispatcher.BeginInvoke(() =>
{
richTextBox.ScrollToEnd();
});
RaiseCompletedEvent();
}
}
Если у вас есть несколько RichTextBoxes
в вашем представлении, вы можете предоставить параметр конструктору RichTextBoxScrollToEnd
, который является именем конкретного элемента управления, на который вы хотите настроить таргетинг, а затем отфильтровать richTextBoxes, используя это имя, т.е.
var richTextBox = richTextBoxes.FirstOrDefault(c => c.Name == _nameOfControl);
См. Упомянутый вопрос для более подробной информации.