在 wpf 中将文本转换为 ProperCase

Converting Text to ProperCase in wpf

我正在创建一个带有奇数文本框的 wpf 控件,我希望将其文本转换为正确的大小写。

为此我创建了一个转换器;

Public Class TextToPropperCaseConverter
Implements IValueConverter


Public Function Convert(value As Object, targetType As Type, parameter As Object, culture As Globalization.CultureInfo) As Object Implements IValueConverter.Convert
    Dim txt As String = TryCast(parameter, String)
    If Not String.IsNullOrEmpty(txt) Then
        Return StrConv(txt, VbStrConv.ProperCase)
    Else
        Return txt.ToString
    End If
End Function

Public Function ConvertBack(value As Object, targetType As Type, parameter As Object, culture As Globalization.CultureInfo) As Object Implements IValueConverter.ConvertBack
    Return Nothing
End Function
End Class

然后继续参考我的 xaml 中的相关文本框,就像这样;

 <wizard:AeroWizardWindow.Resources>
    <local:TextToPropperCaseConverter x:Key="txtToPcase"/>
</wizard:AeroWizardWindow.Resources>

<TextBox Grid.Column="1" HorizontalAlignment="Left" Height="62" Margin="8,8,0,0" Grid.Row="1" TextWrapping="Wrap"  Text="{Binding Address, Converter={StaticResource txtToPcase}}" AcceptsReturn="True" VerticalAlignment="Top" Width="232"/>

也许我天真地希望文本框中输入的文本随着用户键入而改变,或者随着控件失去焦点而改变,但什么也没发生。

这是执行此操作的正确方法吗,或者尽管我正在使用 MVVM 并试图避免代码隐藏,但这是一个代码隐藏实际上更好的经典示例?

非常感谢

如果您想实现从用户输入到 ViewModel 属性 的转换,您需要实现 ConvertBack。另请参阅 documentation。您 return Nothing,这意味着无论您在 TextBox 中键入什么,Nothing 将始终是使用转换器的结果值。