mvvm light调用RaisePropertyChanged不触发属性getter(windows phone 8.
本文关键字:getter windows phone 属性 调用 light RaisePropertyChanged mvvm | 更新日期: 2023-09-27 18:06:15
在我的应用程序中,我有一个文本框,用户在上面键入一个数字。我想把这个拉丁数字转换成波斯数字作为用户键入它。调用RaisePropertychanged
后,MobileNumber
的getter
未被调用,因此App Ui不更新。我的代码有什么问题?
这是我的代码
View.xaml
<Page
x:Class="CustomName.RegistrationPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:ShahrMobileBank.Views.Masters.Registration"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:behaviors="using:Template10.Behaviors"
xmlns:interactivity="using:Microsoft.Xaml.Interactivity"
xmlns:core="using:Microsoft.Xaml.Interactions.Core"
xmlns:converter="using:ShahrMobileBank.Converter"
mc:Ignorable="d"
DataContext="{Binding Path=RegistrationPage, Source={StaticResource ViewModelLocator}}">
<StackPanel Background="{StaticResource RegistrationPageBackgroundColor}" x:Name="LayoutRoot">
<StackPanel.Resources>
<converter:RegistrationConverter x:Key="RegistrationConverter"/>
</StackPanel.Resources>
<TextBox Style="{StaticResource GenericTextBoxBeforeLogin}" x:Uid="PhoneNumber" InputScope="Number" Text="{Binding Path=MobileNumber, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" MaxLength="{StaticResource MobileNumberMaxLength}"/>
</StackPanel>
</Page>
ViewModel.cs
public class RegistrationPageViewModel : ViewModelBase
{
private string _mobileNumber;
public String MobileNumber
{
get
{
return _mobileNumber;
}
set
{
_mobileNumber = LangUtil.ConvertEnNumberToFaNumber(value); // this converts the number from Latin to Persian
RaisePropertyChanged(() => MobileNumber);
}
}
}
尝试将RaisePropertyChanged
行更改为RaisePropertyChanged("MobileNumber");
如果您使用mvvm - light代码片段(如果安装了,您可以开始输入mvvm,智能感知将弹出),您可以查看mvvmpinpc
,它是PropertyChanged
代码片段之一。您可以通过不同的模板字段Tab
来将其设置为您想要的内容,并可能揭示一些提示和技巧,使您的编码生活更轻松。