我正在使用WPF开发文本编辑器,该文本编辑器也应适用于盲人。
要让屏幕阅读器读取程序界面,必须为组件设置Helptext属性。
在XAML中,它是这样工作的:
SET @r=0;
UPDATE student_table SET rank= @r:= (@r+1) ORDER BY vote DESC;
但是如何在C#中设置属性HelpText?
答案 0 :(得分:0)
常规上,附加属性具有静态方法,该方法是以“ Set”为前缀的属性名称,以便从代码中进行更新。在这种情况下 SetHelpText(DependencyObject, value)
AutomationProperties.SetHelpText(ChkBarrierefrei, "Here the accessibility of the editor can be activated or deactivated")
答案 1 :(得分:0)
您已经问过一个有关如何使用绑定来实现目标的示例,这是一个简单的示例。
我们首先需要为每个所谓的 ViewModel 创建一个类作为我们的基类。
public class ViewModelBase : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void RaisePropertyChanged([CallerMemberName] string propertyName)
{
this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
我们现在可以从该类派生特定的ViewModel,即我们要用来保存BarriereFrei帮助文本的ViewModel。
public class MyViewModel : ViewModelBase
{
private string barriereFreiHelpText = "Here the accessibility of the editor can be activated or deactivated.";
public string BarriereFreiHelpText
{
get { return this.barriereFreiHelpText; }
set
{
if (value == this.barriereFreiHelpText)
{
return;
}
this.barriereFreiHelpText = value;
this.RaisePropertyChanged(); // This line makes sure the UI is updated
// whenever a new help text is set.
}
}
}
在视图中(我假设它称为MainWindow
),我们现在可以使用以前定义的ViewModel,如下所示:
<Window x:Class="MyProject.Views.MainWindow"
xmlns:viewModel="clr-namespace:MyProject.ViewModels">
<Window.DataContext>
<viewModel:MyViewModel />
</Window.DataContext>
<Grid>
<CheckBox x:Name="ChkBarrierefrei"
Content="Editor ba_rrierefrei"
ToolTip="Hier kann die Barrierefreiheit des Editors aktiviert oder deaktiviert werden"
AutomationProperties.HelpText="{Binding BarriereFreiHelpText}"
Margin="10"
Click="ChkBarrierefrei_CheckedChanged"/>
</Grid>
</Window>
您是否注意到了
AutomationProperties.HelpText="{Binding BarriereFreiHelpText}"
部分?这就是魔术发生的地方。该行的作用是确保HelpText
属性始终等于您在ViewModels BarriereFreiHelpText
属性中设置的属性。
要使所有这些正常工作,您需要在应用程序中的某个位置连接ViewModel和Window,如下所示:
MyViewModel viewModel = new MyViewModel();
MainWindow window = new MainWindow();
window.DataContext = viewModel;
,您现在可以在运行时使用来更改帮助文本
(window.DataContext as MyViewModel).BarriereFreiHelpText = "Whatever you want it to be";
,UI会自动使用新的帮助文本进行更新。
与直接设置CheckBox
和AutomationProperties.HelpText
的{{1}} es much cleaner
属性相比,这绝对是一个更好的解决方案(您在更改ViewModel的属性时不使用了解任何用户界面)。
我知道这一切可能会让人不知所措,但我强烈建议您遵循所谓的MVVM方法,不仅针对less tightly coupled
es帮助文本,而且针对所有内容。您将节省很多时间,代码行和令人讨厌的错误。
进一步阅读:
我希望采用MVVM方法不应该太迟了,我希望您能从MVVM中获得很多成功和乐趣-相信它后,它真的很好玩,相信我;)