DataGrid拼写检查:如何添加自定义词典?

时间:2017-10-23 22:12:11

标签: c# wpf datagrid spell-checking .net-4.6.1

我有一个数据网格,其中一个列启用了拼写检查。拼写检查器使用默认字典,但是我想添加一个自定义字典,以便拼写检查器可以访问用户添加的特定于域的术语。

该栏定义如下:

<DataGrid.Columns>
    <DataGridTextColumn x:Name="dgcComments" Header="Comment" Width="*" Binding="{Binding Path=Comment, Mode=TwoWay, UpdateSourceTrigger=PropertyChange}">
        <DataGridColumn.ElementStyle>
            <Style TargetType="TextBlock">
                <Setter Property="TextWrapping" Value="Wrap" />
                <Setter Property="Padding" Value="2,0,2,2" />
                <Setter Property="TextAlignment" Value="Left" />
            </Style>
        </DataGridColumn.ElementStyle>
        <DataGridColumn.EditingElementStyle>
            <Style TargetType="TextBox">
                <Setter Property="TextWrapping" Value="Wrap" />
                <Setter Property="AcceptsReturn" Value="True" />
                <Setter Property="Padding" Value="2,0,2,2" />
                <Setter Property="TextAlignment" Value="Left" />
                <Setter Property="MaxLength" Value="4000" />
                <Setter Property="SpellCheck.IsEnabled" Value="True" />
            </Style>
        </DataGridColumn.EditingElementStyle>
    </DataGridTextColumn>
    ...
</DataGrid.Columns>

我知道我无法在xaml中添加字典 - SpellCheck.CustomDictionaries没有setter,只添加和删除方法。有没有办法在后面的代码中添加字典?我很难过;我无法解决如何访问TextBox编辑元素以调用TextBox.SpellCheck.CustomDictionary.Add()。

1 个答案:

答案 0 :(得分:0)

这可以解决您上面提到的问题。 https://msdn.microsoft.com/en-us/library/system.windows.controls.spellcheck.customdictionaries(v=vs.110).aspx

uri description - https://msdn.microsoft.com/en-us/library/aa970069(v=vs.100).aspx

xmlns:sys="clr-namespace:System;assembly=System" 
<DataGrid.Columns>
        <DataGridTextColumn x:Name="dgcComments" Header="Comment" Width="*" Binding="{Binding Path=Comment, Mode=TwoWay, UpdateSourceTrigger=PropertyChange}">
            <DataGridColumn.ElementStyle>
                <Style TargetType="TextBlock">
                    <Setter Property="TextWrapping" Value="Wrap" />
                    <Setter Property="Padding" Value="2,0,2,2" />
                    <Setter Property="TextAlignment" Value="Left" />
                </Style>
            </DataGridColumn.ElementStyle>
            <DataGridColumn.EditingElementStyle>
                <Style TargetType="TextBox">
                    <Setter Property="TextWrapping" Value="Wrap" />
                    <Setter Property="AcceptsReturn" Value="True" />
                    <Setter Property="Padding" Value="2,0,2,2" />
                    <Setter Property="TextAlignment" Value="Left" />
                    <Setter Property="MaxLength" Value="4000" />
                    <Setter Property="SpellCheck.IsEnabled" Value="True" />
                   <Setter Property="SpellCheck.CustomDictionaries">
                        <Setter.Value>
                            <sys:Uri>pack://application:,,,/customwords.lex</sys:Uri>
                        </Setter.Value>
                    </Setter>
                </Style>
            </DataGridColumn.EditingElementStyle>
        </DataGridTextColumn>
        ...
    </DataGrid.Columns>