我正在尝试获取现有文档,如果标题不存在,请创建一个,然后在对角线上标题为"DRAFT"的标题中添加水印.我已经按照这里发布的示例进行了操作,如果标题已经存在,我会将代码添加到添加水印的位置.
当前的问题是,当我添加新标题,添加对文档的引用,然后将水印添加到标题时,文档已损坏,无法再在Word 2010中打开.
为了测试我一直在做以下事情:从页面本身创建一个新的word文档,在页面的主要部分使用"TestDoc"文本.以"TestDoc.docx"保存到我的桌面并关闭该文件.然后我从Visual Studio运行应用程序.下面的代码将始终使其损坏.如果我在文件中添加一个没有文字的标题,然后点击保存,水印将正确显示.
这是我到目前为止:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Vml;
using DocumentFormat.OpenXml.Vml.Office;
using DocumentFormat.OpenXml.Vml.Wordprocessing;
using DocumentFormat.OpenXml.Wordprocessing;
using HorizontalAnchorValues = DocumentFormat.OpenXml.Vml.Wordprocessing.HorizontalAnchorValues;
using Lock = DocumentFormat.OpenXml.Vml.Office.Lock;
using VerticalAnchorValues = DocumentFormat.OpenXml.Vml.Wordprocessing.VerticalAnchorValues;
namespace DocumentWatermarkTest
{
class Program
{
static void Main(string[] args)
{
var doc = WordprocessingDocument.Open(@"C:\Users\loggedinuser\Desktop\TestDoc.docx", true);
AddWatermark(doc);
doc.MainDocumentPart.Document.Save();
}
static Header MakeHeader()
{
var header = new Header();
var paragraph = new Paragraph();
var run = new Run();
var text …Run Code Online (Sandbox Code Playgroud) 我有一个用作搜索结果框的silverlight列表框.我正在使用动态搜索(搜索框中的键盘会导致触发事件以过滤此列表框的内容).我遇到的问题是如果用户在未经过滤的情况下向下滚动,然后进行搜索,则重新绑定列表框不会导致滚动返回到顶部,使得结果看起来只有一个它的价值.
我到目前为止列表框的代码是这个(这是一个简化版本):
XAML:
<Grid x:Name="MainGrid" Rows="2">
<StackPanel Orientation="Horizontal" Grid.Row="0">
<TextBlock text="Search" Grid.Row="0" />
<Textbox x:name="textboxSearch" Keyup="textBoxSearch_KeyUp" width="200"
Height="25"/>
</StackPanel>
<ListBox x:Name="SearchResultBox" Visibility="Visible" Grid.Row="1"
ScrollViewer.HorizontalScrollBarVisibility="Auto"
ScrollViewer.VerticalscrollbarVisibility="Auto">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical">
<TextBlock Text="{Binding ReportName}" />
<TextBlock Text="{Binding ReportDescription}" />
</StackPanel>
</DataTemplate>
</Listbox.ItemTemplate>
</ListBox>
</Grid>
Run Code Online (Sandbox Code Playgroud)
VB:
Imports System.Threading
Imports System.Collections.ObjectModel
Imports System.ComponentModel
Partial Public Class ucSearch
Inherits UserControl
Private WithEvents BGwork As New BackgroundWorker()
Private mReportList as New List(Of cFilter)
Public Sub New()
InitializeComponent()
FillReportList()
NewFilterList()
End Sub
Private Sub FillReportList()
mReportList.Add(new cFilter("Report …Run Code Online (Sandbox Code Playgroud)