61 lines
1.5 KiB
C#
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);
|
|
}
|
|
}
|