gpt4 book ai didi

c# - 屏幕阅读器 WPF Groupstyles

转载 作者:IT王子 更新时间:2023-10-29 04:01:34 26 4
gpt4 key购买 nike

我正在尝试为 GroupStyle 控件模板中的控件设置 AutomationProperties.Name 属性,但它似乎没有产生任何结果。我在我的模板中的 Expander 上设置了它,但即使我只是在没有绑定(bind)的情况下输入一些文本,它也什么也没说。我还尝试在 GroupItem 上放置一个 setter,但也没有用。我有点不知所措。我希望组项目上的属性能够解决它。

XAML:

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="WpfApplication8.MainWindow"
x:Name="win"
Title="MainWindow"
Width="640"
Height="480">

<Grid x:Name="LayoutRoot">
<ListBox x:Name="lstbx"
Margin="71,45,99,78"
ItemsSource="{Binding ElementName=win,
Path=Samples}">
<ListBox.GroupStyle>
<GroupStyle>
<GroupStyle.ContainerStyle>
<Style TargetType="{x:Type GroupItem}">
<Setter Property="AutomationProperties.Name"
Value="this is a test" />
<Setter Property="KeyboardNavigation.TabNavigation"
Value="Cycle" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type GroupItem}">
<Expander Name="templateLstBxExpander"
AutomationProperties.Name="test test test"
IsExpanded="True">

<Expander.Header>
<StackPanel Orientation="Horizontal">
<Label Name="templateLstBxExpanderHeader"
Content="{Binding Path=Name}"
FontWeight="Bold" />
</StackPanel>
</Expander.Header>
<ItemsPresenter />
</Expander>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</GroupStyle.ContainerStyle>
</GroupStyle>
</ListBox.GroupStyle>
</ListBox>
</Grid>
</Window>

XAML.cs:

using System;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Collections.Generic;
using System.Collections.ObjectModel;
namespace WpfApplication8
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public static readonly DependencyProperty sampleProperty = DependencyProperty.Register(
"Samples", typeof(ObservableCollection<sample>), typeof(MainWindow), new PropertyMetadata(new ObservableCollection<sample>()));

public ObservableCollection<sample> Samples
{
get
{
return (ObservableCollection<sample>)this.GetValue(sampleProperty);
}

set
{
this.SetValue(sampleProperty, value);
}
}

public MainWindow()
{
this.InitializeComponent();

CollectionView view = (CollectionView)CollectionViewSource.GetDefaultView(lstbx.ItemsSource);
PropertyGroupDescription groupDescription = new PropertyGroupDescription("Location");
view.GroupDescriptions.Add(groupDescription);
sample test = new sample();
test.Location = "one";
test.Name = "blah blah";
Samples.Add(test);
sample test2 = new sample();
test2.Location = "two";
test2.Name = "ya ya";
Samples.Add(test2);

}
}
}

示例.cs:

using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;

namespace WpfApplication8
{
public class sample
{


public string Name { set; get; }
public string Location{ set; get; }

}

最佳答案

问题实际上是屏幕阅读器应该如何达到该值。可以通过 MSAA 从游标访问组项,但不能通过 UIA。 UIA 是用于 WPF 中辅助功能的主要 API。

UIA 和 WPF 的核心问题是,当尝试读取通过光标找到的控件时(其他方式是焦点和插入符号),通常返回主窗口。

作为屏幕阅读器的开发者,处理此问题的最佳方法是同时使用 MSAA 和 UIA。如果 UIA 未返回任何有值(value)的内容,则回退到使用 MSAA。

关于c# - 屏幕阅读器 WPF Groupstyles,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19326107/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com