显示当前页面编号和DocumentViewer中的总页数?

时间:2012-06-08 10:13:48

标签: c# wpf

我正在使用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();
}

1 个答案:

答案 0 :(得分:0)

我知道这要花费太多时间,但这是你的解决方案。从DocumentViewer派生并公开事件。

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

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

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