我一直在这个网站,youtube和谷歌上寻找答案,但我只想出了EventTriggers
或ImageSource
。
我有一个LoginPageView
和LoginPageViewModel
,有一个Entry
,用户必须在其中输入密码,还有一个CheckBox
,允许查看输入的密码。
我已经尝试了许多方法来绑定和编码Checkbox
以显示密码,但我最终要么不成功,要么只是永久显示密码。
我有**.XAML**的代码
<Entry Text="{Binding Password}"
TextColor="White"
FontSize="18"
FontAttributes="Bold"
Placeholder="Password"
PlaceholderColor="White"
IsPassword="{Binding IsPass}"
x:Name="PasswordBox"
VerticalTextAlignment="Center"/>
<CheckBox Color="White"
x:Name="ChkShowPass"
Margin="25,0,0,0"
IsChecked="{Binding IsCheckPass}"/>
<Label Text="Show Password"
TextColor="White"
FontAttributes="Bold"
FontSize="17"
RelativeLayout.XConstraint="60"
RelativeLayout.YConstraint="4"/>
现在,我为LoginPageViewModel
尝试的选项如下
选项1
private bool isCheckPass;
public bool IsCheckPass
{
get { return isCheckPass; }
set
{
if (isCheckPass != value)
{
isCheckPass = value;
if (PropertyChanged != null)
{
}
}
}
}
然后尝试**.XAML**
<ImageButton Source="ShowPass.png"
x:Name="BtnShowPass"
Margin="25,0,0,0"
BackgroundColor="Transparent"
Command="{Binding ToggleIsPassword}">
<ImageButton.Triggers>
<DataTrigger TargetType="ImageButton"
Binding="{Binding IsPassword}" Value="True">
<Setter Property="Source" Value="HidePass.png" />
</DataTrigger>
</ImageButton.Triggers>
</ImageButton>
登录页面视图模型中的.cs
private bool _IsPass = true;
public bool IsPass
{
get
{
return _IsPass;
}
set
{
_IsPass = value;
OnPropertyChanged();
OnPropertyChanged("IsPass");
}
}
public ICommand ToggleIsPassword => new Command(() => IsPass = !IsPass);
请有人在这里协助,任何和所有的帮助欢迎。
1条答案
按热度按时间balp4ylt1#
更新
您需要一个转换器来转换它,您可以使用InverseBoolConverter,如下所示:
在XAML中定义它:
如果我是你,我会做下面这样的事情:
在ViewModel中添加一个属性:
然后在你的视野中,你会这样绑定它们:
希望这对你有帮助!