Files
ShrlAlgoToolkit/WPFluent/Controls/CardAction/CardActionAutomationPeer.cs

63 lines
1.5 KiB
C#

using System;
using System.Linq;
using System.Windows.Automation;
using System.Windows.Automation.Peers;
namespace WPFluent.Controls;
internal class CardActionAutomationPeer : FrameworkElementAutomationPeer
{
private readonly CardAction _owner;
public CardActionAutomationPeer(CardAction owner) : base(owner) { _owner = owner; }
protected override AutomationControlType GetAutomationControlTypeCore() { return AutomationControlType.Button; }
protected override string GetClassNameCore() { return "Button"; }
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);
}
}