我正在使用DocumentViewer并在其中显示.xps文件。一切都工作正常,但当我试图显示当前页面和总页数时,它不起作用。我尝试了DocumentViewerReading_PageViewsChanged事件,它的工作方式不合适。
按当前页面编号应该在页面滚动时更改,例如在Adobe Reader和XPS查看器中。
我正在使用C#/ WPF和Visual Studio 2010
以下是我试过的代码。
string strFile = @"data\lib.xps";
xpsDoc = new XpsDocument(strFile, FileAccess.Read);
DocumentViewerReading.Document = xpsDoc.GetFixedDocumentSequence();
///////////////////////////////////
private void txtCurrentPageNo_TextChanged(object sender, TextChangedEventArgs e)
{
if (txtCurrentPageNo.Text != "")
{
DocumentViewerReading.GoToPage(Convert.ToInt32(txtCurrentPageNo.Text));
}
}
private void DocumentViewerReading_PageViewsChanged(object sender, EventArgs e)
{
txtCurrentPageNo.Text = DocumentViewerReading.MasterPageNumber.ToString();
}
答案 0 :(得分:0)
我知道这要花费太多时间,但这是你的解决方案。从DocumentViewer派生并公开事件。
public class GenericDocumentViewer : DocumentViewer
{
public event Action<object> MasterPageNumberChanged;
protected override void OnMasterPageNumberChanged()
{
base.OnMasterPageNumberChanged();
if (MasterPageNumberChanged != null)
MasterPageNumberChanged(this);
}
}
我使用它(与上面的代码结合使用)来成功制作一个在滚动时更新的当前页面显示。