0

我正在手机上开发 Windows 通用应用程序(XAML,C#),并为讲述人启用辅助功能。有人知道如何让旁白在打开页面时自动阅读页面标题吗?

我尝试在页面中设置automationproperties.name 但没有奏效:

<Page
x:Class="xxxxxx"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
AutomationProperties.Name="Page title to be read"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
4

2 回答 2

0

当您在列表中选择控件或编辑文本框时,将应用 UWP 讲述人的功能。如果您想在应用程序打开时阅读内容,您应该使用 SpeechSynthesizer API,它非常容易实现:

1.- 在 XAML 中添加一个媒体元素

    <MediaElement x:Name="MediaElement"/>

2.-然后在页面后面的代码中:

 public MainPage()
    {
        this.InitializeComponent();
        this.Loaded += MainPage_Loaded;
    }

    private void MainPage_Loaded(object sender, RoutedEventArgs e)
    {
        ReadTitle();
    }

    private async void ReadTitle()
    {
        var voice = SpeechSynthesizer.AllVoices.First();
        SpeechSynthesizer reader = new SpeechSynthesizer() { Voice = voice };
        var text= this.GetValue(AutomationProperties.NameProperty) as String; 
        await reader.SynthesizeTextToStreamAsync(text);

        MediaElement.SetSource(stream, stream.ContentType);
        MediaElement.Play();
    }

您可以阅读您想要将字符串传递给阅读器的所有内容。

于 2015-12-27T06:08:36.933 回答
0

您需要通过叙述者进行查看。我不相信您可以在 Page Class 中声明 Name 属性。在您的页面内容中尝试这样的操作:

<HyperlinkButton
    NavigateUri="www.bing.com"
    AutomationProperties.AutomationID="bing url" //Not Required to work
    AutomationProperties.Name="Go to the Bing Homepage"//Narrator will read this
    <StackPanel>
       <TextBlock Text="Bing Dot Com" />
       <TextBlock Text="www.bing.com" />
    <StackPanel>
</HyperlinkButton>

https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.automation.peers.accessibilityview

编辑:您可能还需要以编程方式将焦点设置在该项目上才能正常工作

于 2016-08-16T19:02:54.793 回答