Я использую Case конвертер в моем XAML для текстового поля как:IValueConverter не работает в телефоне 8.1 Xaml
<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
Проблема в том, что преобразование корпуса не работает, не могли бы вы исправить меня или совет, где я поступил неправильно.
EDIT: Модифицированный 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
Однако текст не меняется случай.
Я сделал упомянутые изменения, удалены все точки отладки (конвертер работает). однако текст в пользовательском интерфейсе не обновляется. – surpavan