Полноэкранный richtextbox в Silverlight - PullRequest
1 голос
/ 02 сентября 2010

У меня есть форма данных с richtextbox в нем.Пользователь может набирать текст и иметь некоторые возможности редактирования, но я хотел бы дать пользователю возможность развернуть редактор до полноэкранного режима, чтобы иметь больше возможностей редактирования richtextbox.Как я могу реализовать функцию, которая позволит мне полноэкранный (или, по крайней мере, создать большее окно) richtexteditor, чтобы у пользователя был лучший обзор документа и больше возможностей редактирования?режим.

1 Ответ

1 голос
/ 02 сентября 2010

Полноэкранный режим не будет работать, поскольку у вас есть ограничение ввода с клавиатуры в полноэкранном режиме:

  • Стрелка вверх
  • Стрелка вниз
  • Стрелка влево
  • Стрелка вправо
  • Пробел
  • Tab
  • Page Up
  • Page Down
  • Home
  • Конец
  • Введите

Например, вы можете сделать так, чтобы ваш элемент заполнил все пространство приложения Silverlight, указав точный размер вашего RootVisual и изменив поля для правильного размещения в вашем приложении:

XAML:

<UserControl x:Class="SilverlightApplication1.MyRichTextBox"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400">

<Grid x:Name="LayoutRoot" Background="White">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition Height="*" />
    </Grid.RowDefinitions>
    <Button x:Name="FullScreen" Grid.Row="0" Content="FullScreen" Click="FullScreen_Click"  />
    <RichTextBox Grid.Row="1" />
</Grid>

Код-за:

using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;

namespace SilverlightApplication1
{
    public partial class MyRichTextBox : UserControl
    {
        private Thickness _oldMargin;
        private double _oldHeight = double.NaN;
        private double _oldWidth = double.NaN;
        private HorizontalAlignment _oldHorizontalAlignment;
        private VerticalAlignment _oldVerticalAlignment;
        private bool _fullScreen = false;

        public MyRichTextBox()
        {
            InitializeComponent();
        }

        private void FullScreen_Click(object sender, RoutedEventArgs e)
        {
            if (_fullScreen)
            {
                _fullScreen = false;
                Margin = _oldMargin;
                Width = _oldWidth;
                Height = _oldHeight;
            }
            else
            {
                _fullScreen = true;

                _oldMargin = Margin;
                _oldWidth = Width;
                _oldHeight = Height;
                _oldHorizontalAlignment = HorizontalAlignment;
                _oldVerticalAlignment = VerticalAlignment;

                FrameworkElement rootVisual = Application.Current.RootVisual as FrameworkElement;
                GeneralTransform generalTransform = TransformToVisual(rootVisual);

                Point position = generalTransform.Transform(new Point(0, 0));
                Width = rootVisual.ActualWidth;
                Height =rootVisual.ActualHeight;

                Margin = new Thickness(-position.X - 1, -position.Y - 1
                  , (ActualWidth + position.X) - rootVisual.ActualWidth - 1
                  , (ActualHeight + position.Y) - rootVisual.ActualHeight - 1);
            }
        }
    }
}
...