Пример #1
0
        private void keyDownTasker(object eventObj)
        {
            if (MessageInput.Document.CheckAccess())
            {
                KeyEventArgs e = eventObj as KeyEventArgs;
                switch (e.Key)
                {
                case Key.Up:
                    MessageInput.Document.Blocks.Clear();
                    if (_messageSendedIndex < _messageSended.Count)
                    {
                        _messageSendedIndex++;
                        MessageInput.Document.Blocks.AddRange(LoadXaml(_messageSended[_messageSended.Count - _messageSendedIndex].ToString()).Blocks.ToList());
                        MessageInput.Selection.Select(MessageInput.Document.ContentEnd, MessageInput.Document.ContentEnd);
                    }
                    break;

                case Key.Down:
                    MessageInput.Document.Blocks.Clear();
                    if (_messageSendedIndex > 1)
                    {
                        _messageSendedIndex--;
                        MessageInput.Document.Blocks.AddRange(LoadXaml(_messageSended[_messageSended.Count - _messageSendedIndex].ToString()).Blocks.ToList());
                        MessageInput.Selection.Select(MessageInput.Document.ContentEnd, MessageInput.Document.ContentEnd);
                    }
                    break;
                }
                if ((e.KeyboardDevice.IsKeyDown(Key.LeftCtrl) || e.KeyboardDevice.IsKeyDown(Key.RightCtrl)) && e.Key == Key.A)
                {
                    MessageInput.SelectAll();
                }
            }
            else
            {
                MessageInput.Document.Dispatcher.Invoke(new Action(() => { keyDownTasker(eventObj); }));
            }
        }