C# 是否更改UWP文本框的屏幕阅读器行为?
我已经编写了一个UserControl,它的工作原理类似于密码箱,但使用文本箱实现。该控件将字符替换为“点”字符,并用于不希望显示实际内容的情况。除了屏幕阅读器将读取输入的每个字符外,它的工作正常,这有违目的。相比之下,当用户在密码框中键入字符时,叙述者程序会说“隐藏”,而不是键入的密钥C# 是否更改UWP文本框的屏幕阅读器行为?,c#,xaml,uwp,controls,C#,Xaml,Uwp,Controls,我已经编写了一个UserControl,它的工作原理类似于密码箱,但使用文本箱实现。该控件将字符替换为“点”字符,并用于不希望显示实际内容的情况。除了屏幕阅读器将读取输入的每个字符外,它的工作正常,这有违目的。相比之下,当用户在密码框中键入字符时,叙述者程序会说“隐藏”,而不是键入的密钥 当用户在文本框中键入键时,我能做些什么来改变屏幕阅读器的行为吗?如果我能让它说“隐藏”,那就太好了,但是让屏幕阅读器什么也不说也没关系。我查看了AutomationProperties类上的属性,但没有看到任何
当用户在文本框中键入键时,我能做些什么来改变屏幕阅读器的行为吗?如果我能让它说“隐藏”,那就太好了,但是让屏幕阅读器什么也不说也没关系。我查看了AutomationProperties类上的属性,但没有看到任何明显的内容。在编写Windows应用程序时,用于UI的类已经提供了UI自动化支持,它支持可访问性应用程序和辅助技术,如屏幕阅读器。PasswordBox的自动化是,您可以在PasswordBox AutomationPeer部分中检查默认对等实现和覆盖,它覆盖可以阻止屏幕阅读器读取字符的IsPassword方法 因此,您可以从TextBox派生自定义类,并为自定义类中启用的其他功能添加自动化支持。然后重写OnCreateAutomationPeer,使其返回您的自定义对等。例如:
public class MyCustomAutomationPeer : FrameworkElementAutomationPeer
{
public MyCustomAutomationPeer(MyTextBox owner) : base(owner)
{
}
protected override string GetClassNameCore()
{
return "MyTextBox";
}
protected override bool IsPasswordCore()
{
return true;
}
protected override AutomationControlType GetAutomationControlTypeCore()
{
return AutomationControlType.Edit;
}
}
public class MyTextBox : TextBox
{
public MyTextBox()
{
// other initialization; DefaultStyleKey etc.
}
protected override AutomationPeer OnCreateAutomationPeer()
{
return new MyCustomAutomationPeer(this);
}
}
之后,您可以在MyTextBox中将键入的字符替换为“点”字符。此外,有关自定义自动化对等点的更多详细信息,您可以参考此信息。谢谢Faywang-这正是我所需要的。