gpt4 book ai didi

wpf - 是否可以将自定义拼写检查字典添加到样式中?

转载 作者:行者123 更新时间:2023-12-03 20:18:23 24 4
gpt4 key购买 nike

我发现许多网站提供了如何将自定义拼写检查字典添加到单个文本框的示例,如下所示:

<TextBox SpellCheck.IsEnabled="True" >
<SpellCheck.CustomDictionaries>
<sys:Uri>customdictionary.lex</sys:Uri>
</SpellCheck.CustomDictionaries>
</TextBox>

我已经在我的应用程序中对此进行了测试,它工作得很好。

但是,我有行业特定的行话,我需要在应用程序中的所有文本框中忽略这些术语,并且将这个自定义字典单独应用于每个文本框似乎在风格面前吐口水。目前我有一个全局文本框样式来打开拼写检查:
<Style TargetType="{x:Type TextBox}">
<Setter Property="SpellCheck.IsEnabled" Value="True" />
</Style>

我试图做这样的事情来添加自定义字典,但它不喜欢它,因为 SpellCheck.CustomDictionaries 是只读的,而 setter 只采用可写属性。
<Style TargetType="{x:Type TextBox}">
<Setter Property="SpellCheck.IsEnabled" Value="True" />
<Setter Property="SpellCheck.CustomDictionaries">
<Setter.Value>
<sys:Uri>CustomSpellCheckDictionary.lex</sys:Uri>
</Setter.Value>
</Setter>
</Style>

我进行了广泛的搜索以寻找答案,但所有示例仅显示第一个代码块中引用的特定文本框中的一次性场景。任何帮助表示赞赏。

最佳答案

我有同样的问题,无法用样式解决它,但创建了一些完成工作的代码。

首先,我创建了一个方法来查找包含在父控件的可视化树中的所有文本框。

private static void FindAllChildren<T>(DependencyObject parent, ref List<T> list) where T : DependencyObject
{
//Initialize list if necessary
if (list == null)
list = new List<T>();

T foundChild = null;
int children = VisualTreeHelper.GetChildrenCount(parent);

//Loop through all children in the visual tree of the parent and look for matches
for (int i = 0; i < children; i++)
{
var child = VisualTreeHelper.GetChild(parent, i);
foundChild = child as T;

//If a match is found add it to the list
if (foundChild != null)
list.Add(foundChild);

//If this control also has children then search it's children too
if (VisualTreeHelper.GetChildrenCount(child) > 0)
FindAllChildren<T>(child, ref list);
}
}

然后,每当我在我的应用程序中打开一个新选项卡/窗口时,我都会向加载的事件添加一个处理程序。
window.Loaded += (object sender, RoutedEventArgs e) =>
{
List<TextBox> textBoxes = ControlHelper.FindAllChildren<TextBox>((Control)window.Content);
foreach (TextBox tb in textBoxes)
if (tb.SpellCheck.IsEnabled)
Uri uri = new Uri("pack://application:,,,/MyCustom.lex"));
if (!tb.SpellCheck.CustomDictionaries.Contains(uri))
tb.SpellCheck.CustomDictionaries.Add(uri);
};

关于wpf - 是否可以将自定义拼写检查字典添加到样式中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9981880/

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