// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // // Description: AutomationPeer associated with DocumentPageView. // using System.Globalization; // CultureInfo using System.Windows.Controls.Primitives; // DocumentPageView namespace System.Windows.Automation.Peers { /// <summary> /// AutomationPeer associated with DocumentPageView. /// </summary> public class DocumentPageViewAutomationPeer : FrameworkElementAutomationPeer { /// <summary> /// Constructor. /// </summary> /// <param name="owner">Owner of the AutomationPeer.</param> public DocumentPageViewAutomationPeer(DocumentPageView owner) : base(owner) {} /// <summary> /// <see cref="AutomationPeer.GetChildrenCore"/> /// </summary> /// <remarks> /// AutomationPeer associated with DocumentPageView blocks any exposure /// of the currently hosted page. So it returns empty collection of children. /// </remarks> protected override List<AutomationPeer> GetChildrenCore() { return null; } /// <summary> /// <see cref="AutomationPeer.GetAutomationIdCore()"/> /// </summary> /// <returns>A string representing the current DocumentPageView.</returns> protected override string GetAutomationIdCore() { // Initialize the result to Empty, so that if Name is not set on the // DocumentPageView, and there is no valid PageNumber set, then the // AutomationId will remain blank to avoid duplicate entries. string result = string.Empty; DocumentPageView owner = (DocumentPageView)Owner; // Check if a Name is already set on the DocumentPageView, otherwise attempt // to construct one. if (!string.IsNullOrEmpty(owner.Name)) { result = owner.Name; } else if ((owner.PageNumber >= 0) && (owner.PageNumber < int.MaxValue)) { // This will set the AutomationId to a string that represents the current // page number, i.e. "DocumentPage1" will represent the first page. These numbers // will be kept in a 1-indexed format. InvariantCulture is used to ensure // that these AutomationIds will not change with the language, so that they // can be trusted to always work in automation. result = string.Create(CultureInfo.InvariantCulture, $"DocumentPage{owner.PageNumber + 1}"); } return result; } } } |