using System.Windows.Automation; using System.Windows.Automation.Peers; namespace WPFluent.Controls; internal class NavigationViewItemAutomationPeer : FrameworkElementAutomationPeer { private readonly NavigationViewItem _owner; public NavigationViewItemAutomationPeer(NavigationViewItem owner) : base(owner) { _owner = owner; } protected override AutomationControlType GetAutomationControlTypeCore() { return AutomationControlType.TabItem; } protected override string GetClassNameCore() { return "NavigationItem"; } protected override AutomationPeer GetLabeledByCore() { if(_owner.Content is UIElement element) { return CreatePeerForElement(element); } return base.GetLabeledByCore(); } protected override string GetNameCore() { var result = base.GetNameCore() ?? string.Empty; if(result == string.Empty) { result = AutomationProperties.GetName(_owner); } if(result == string.Empty && _owner.Content is DependencyObject d) { result = AutomationProperties.GetName(d); } if(result == string.Empty && _owner.Content is string s) { result = s; } return result; } public override object GetPattern(PatternInterface patternInterface) { if(patternInterface == PatternInterface.ItemContainer) { return this; } return base.GetPattern(patternInterface); } }