我已经远远地搜索了这个答案并且已经很短了.我在Visual Studio 2015中使用通用Windows 10(UWP)和C#来构建一个基本的文本编辑器来镜像Notepad.exe的功能作为练习,我遇到了烦人的显示问题/怪癖.
我有一个2行的网格.顶行是StackPanel带按钮的水平行,底部是a RichEditBox.一切都显示得很好..除非RichEditBox有键盘焦点(我几乎确定总是这样)并且我垂直调整窗口大小,RichEditBox(及其绿色边框)的调整大小与其Grid容器不同.当我向下拉窗口调整大小时,RichEditBox顶部和底部的"分离" 边框会快速向上(向下)滑动以填充网格.在此过程中,当动画发生时,文本会抖动.注意:当我水平调整大小时,不会发生这种情况.(下面的图片链接不会让我嵌入图片)
这不是世界末日,但它看起来不专业,必须有一种方法来RichEditBox垂直锚定,所以它总是完全填满网格行,并且在我调整大小时不会从容器中拉开.我尝试了所有的属性Grid.Row,它RichEditBox和内置的ScrollViewer我认为可能与此有关,没有运气.使用VerticalAlignment = Top原因RichEditBox不再垂直填充网格行(当然,除非我用文本填充它).我也把RichEditBox内部的一个ScrollViewer而不是使用它的内置ScrollViewer,它做了相同的行为.
这是我的XAML:
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<StackPanel Orientation="Horizontal" Height="Auto" Grid.Row="0" Background="Azure" AllowFocusOnInteraction="False">
<Button x:Name="FileButton" Content="File" Click="MenuButtonClicked" Padding="3,1" Background="Azure">
<Button.Flyout>
<MenuFlyout Placement="Bottom">
<MenuFlyoutItem Text="New" Click="NewClicked" />
<MenuFlyoutItem Text="Open..." Click="OpenClicked" />
<MenuFlyoutItem Text="Save" Click="SaveClicked" />
<MenuFlyoutItem Text="Save As..." Click="SaveAsClicked" /> …Run Code Online (Sandbox Code Playgroud) 本文...
http://www.codeproject.com/Articles/4528/Use-IRichEditOle-from-C
...显示了如何在C#中获取IRichEditOle COM接口。到目前为止,一切都很好。
我一直在写代码以获取C#中的ITextDocument接口。
(顺便说一句,我需要它来访问Undo(tomSuspend,NULL),因此,如果存在解决方法,那将是受欢迎的)
我一直无法使用 Richeditbox 进行多页打印。我在名为 Editor 的 Xaml 中有 Richeditbox。我使用自定义 GetText() 函数来获取编辑器中的所有内容。我已经能够用单页打印,但不知道如何制作多页。
我试图查看 Microsoft 文档和这个PrintHelper 类。我仍然不确定我应该如何在我的项目中实现这一点。
所以主要问题是我应该如何使用richeditbox进行多页打印?
下面是我的项目打印代码,是的,我知道有硬编码:printDoc.SetPreviewPageCount(1, PreviewPageCountType.Final); 但不知道我应该如何计算这些页面
private PrintManager printMan;
private PrintDocument printDoc;
private IPrintDocumentSource printDocSource;
public MainPage()
{
InitializeComponent();
// Register for PrintTaskRequested event
printMan = PrintManager.GetForCurrentView();
printMan.PrintTaskRequested += PrintTaskRequested;
// Build a PrintDocument and register for callbacks
printDoc = new PrintDocument();
printDocSource = printDoc.DocumentSource;
printDoc.Paginate += Paginate;
printDoc.GetPreviewPage += GetPreviewPage;
printDoc.AddPages += AddPages;
}
private async void Print_Click(object sender, RoutedEventArgs e)
{
if (PrintManager.IsSupported())
{ …Run Code Online (Sandbox Code Playgroud) 使用TextBoxUWP中的法线,您可以将数据绑定到Text属性,并轻松地从ViewModel获取或设置值。不过,RichEditBox它没有数据可绑定的Text属性;相反,您必须使用属性公开的ITextDocument接口,Document并使用各种方法来获取和设置文本。
如何将纯文本数据绑定到ViewModel中的某些内容?