【发布时间】:2015-06-19 19:28:42
【问题描述】:
我在我的 XAML 中使用 Case Converter 作为文本框:
<TextBox Text="{Binding Obj.UserName,Mode=TwoWay,Converter={Binding UpperCaseConverter}}" Grid.Row="1" Grid.Column="0" VerticalAlignment="Center" HorizontalAlignment="Center" MinWidth="200" x:Name="usernametxtbox"/>
和转换器启动为:
Public Sub New()
' This call is required by the designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
UpperCaseConverter = New MCCommonCodes.Converters.CaseConverter(MCCommonCodes.Converters.CharacterCase.Lower)
Me.DataContext = Me
End Sub
Property UpperCaseConverter As MCCommonCodes.Converters.CaseConverter
转换器的代码是:
Public Class CaseConverter
Implements IValueConverter
Property SelectedCase As CharacterCase
Public Sub New(ByVal ConvertCase As CharacterCase)
SelectedCase = ConvertCase
End Sub
Public Function Convert(value As Object, targetType As Type, parameter As Object, language As String) As Object Implements IValueConverter.Convert
Dim str As String = CType(value, String)
If Not value = Nothing Then
Select Case SelectedCase
Case CharacterCase.Lower : Return str.ToLower
Case CharacterCase.Normal : Return str
Case CharacterCase.Upper : Return str.ToUpper
Case Else : Return str
End Select
Else
Return ""
End If
End Function
Public Function ConvertBack(value As Object, targetType As Type, parameter As Object, language As String) As Object Implements IValueConverter.ConvertBack
Throw New NotImplementedException
End Function
End Class
Public Enum CharacterCase
Lower = 0
Upper = 1
Normal = 2
End Enum
问题是大小写转换不起作用,请您纠正我或建议我哪里出错了。
编辑: 修改后的 Xaml 代码,转换器定义为静态资源:
xmlns:cc="using:MCPhone81.MCCommonCodes.Converters"
<Page.Resources>
<cc:CaseConverter x:Key="lowercaseconverter" SelectedCase="Lower"/>
</Page.Resources>
<TextBox Text="{Binding Obj.UserName,Mode=TwoWay,Converter={StaticResource lowercaseconverter}}" />
属性代码:
Property UserName As String
Get
Return _UserNameValue
End Get
Set(value As String)
value = value.ToLower
If Not _UserNameValue.ToLower = value Then
_UserNameValue = value
NotifyPropertyChanged("UserName")
End If
End Set
End Property
但是文本没有改变大小写。
【问题讨论】:
标签: vb.net xaml windows-phone-8.1 ivalueconverter