Files
Shrlalgo.RvKits/WPFluent/Controls/NavigationView/NavigationViewItemAutomationPeer.cs

61 lines
1.5 KiB
C#

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);
}
}