在wpf中将文本转换为正确的大小写

时间:2015-01-27 16:45:46

标签: wpf vb.net xaml mvvm

我正在创建一个带有奇数文本框的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并试图避免代码落后,这是一个典型的示例,其中代码背后实际上会更好?

非常感谢

1 个答案:

答案 0 :(得分:1)

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