从数据网格复制时,不会出现中断字符

我有一个好奇的问题。 当我复制具有2个或更多组的空格的单元格(或一行)时,当我粘贴此空格replace为不分号(Alt + 160)。 更奇怪的是,如果我粘贴在Word上,然后从Word复制并再次粘贴到我的程序的空间返回,但如果我粘贴在Excel然后从Excel复制粘贴在我的程序的非破坏字符仍然存在。 显然,简单的方法不是我们的方式,我们需要复制/粘贴到/从Excel。

我可以控制我的应用程序引入这个字符,并用空格replace它,以避免任何人不会故意引入非破坏字符(从来不是一个好主意)。 但是我们使用VB 6.0中的另外一个应用程序来处理超过200个窗口,而且我没有老板的任何改变。

我debugging了我的代码,并且datagrid没有非中断字符。 复制后,剪贴板没有任何非中断字符。 如果我从文本框中复制相同的文本,则在粘贴时不会用空格replace空格。 这是我的任何datagrids的一列的axml:

<DataGridTextColumn Header="Machine" CanUserSort="True" IsReadOnly="True" MinWidth="10" Width="*" MaxWidth="Infinity" Binding="{Binding Path=NOM_MAQ}"> <DataGridTextColumn.ElementStyle> <Style TargetType="{x:Type TextBlock}"> <Setter Property="ToolTip" Value="{Binding Path=NOM_MAQ}"/> <Setter Property="TextTrimming" Value="CharacterEllipsis"/> <Setter Property="TextWrapping" Value="NoWrap"/> </Style> </DataGridTextColumn.ElementStyle> </DataGridTextColumn> 

我尝试添加到DataGridTextColumn转换器:

 ClipboardContentBinding="{Binding Path=NOM_MAQ, Converter={StaticResource QuitNonBreakingConverter}}" class QuitNonBreakingConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { string texto = value.ToString(); StringBuilder sb = new StringBuilder(texto.Length); foreach (char c in texto.ToCharArray()) { if (char.Equals(c, System.Convert.ToChar(160))) { sb.Append(System.Convert.ToChar(32)); } else sb.Append(c); } return sb.ToString(); } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { return value; } } 

但正如我之前所说的,datagrid和剪贴板都具有非分裂字符,所以这个转换器是徒劳的。

任何想法如何防止这个字符replace?

你看过剪贴板上的所有数据风格吗?

普通string可能没有非破坏性字符,但其他更具体的字符可能是? 在Word / Excel中做“粘贴特殊”,看看有什么其他格式可用,或枚举在代码中。

我敢打赌,剪贴板上有多种数据types,而word优先select其中一种,而excel优先于另一种,而在代码中只有纯文本string?