1

我正在使用 DocumentViewer 并在其中显示 .xps 文件。一切正常,但是当我尝试显示当前页面和总页面时,它不起作用。我尝试了 DocumentViewerReading_PageViewsChanged 事件,它工作不正常。

按当前页号 应该在页面滚动时更改,例如在 Adob​​e 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();
}
4

1 回答 1

0

我知道这来得太晚了,但这是您的解决方案。从 DocumentViewer 派生并公开事件。

public class GenericDocumentViewer : DocumentViewer
{
    public event Action<object> MasterPageNumberChanged;

    protected override void OnMasterPageNumberChanged()
    {
        base.OnMasterPageNumberChanged();
        if (MasterPageNumberChanged != null)
            MasterPageNumberChanged(this);
    }
}

我使用它(结合您上面的代码)成功地制作了一个在滚动时更新的当前页面显示。

于 2017-04-17T13:04:14.470 回答