Edw*_*uay 42 c# wpf xaml textbox mvvm
我怎样才能在XAML中执行此操作:
伪代码:
<TextBox Text="{Binding Password}" Type="Password"/>
Run Code Online (Sandbox Code Playgroud)
这样当用户输入密码时,用户就会看到星星或圆点.
我已经尝试了各种示例,建议使用PasswordChar和PasswordBox,但无法使这些工作.
例如,我可以做到这一点,如图在这里:
<PasswordBox Grid.Column="1" Grid.Row="1"
PasswordChar="*"/>
Run Code Online (Sandbox Code Playgroud)
但我当然希望将Text属性绑定到我的ViewModel,这样我可以在单击按钮时发送绑定TextBox的值(不使用后面的代码),我想这样做:
<TextBox Grid.Column="1" Grid.Row="0"
Text="{Binding Login}"
Style="{StaticResource FormTextBox}"/>
<PasswordBox Grid.Column="1" Grid.Row="1"
Text="{Binding Password}"
PasswordChar="*"
Style="{StaticResource FormTextBox}"/>
Run Code Online (Sandbox Code Playgroud)
但是PasswordBox没有Text属性.
Bra*_*don 33
要在PasswordBox中获取或设置密码,请使用Password属性.如
string password = PasswordBox.Password;
Run Code Online (Sandbox Code Playgroud)
据我所知,这不支持数据绑定,因此您必须在代码隐藏中设置值,并相应地更新它.
ssa*_*mko 14
正如 Tasnim Fabiha 提到的,可以更改 TextBox 的字体以仅显示点/星号。但是我找不到他的字体……所以我给你我的工作示例:
<TextBox Text="{Binding Password}"
FontFamily="pack://application:,,,/Resources/#password" />
Run Code Online (Sandbox Code Playgroud)
只是复制粘贴是行不通的。首先,您必须下载提到的字体“password.ttf”链接:https : //github.com/davidagraf/passwd/blob/master/public/ttf/password.ttf 然后将其复制到您的项目资源文件夹(Project->Properties ->资源->添加资源->添加现有文件)。然后将它的 Build Action 设置为:Resource。
在此之后,您将只看到点,但您仍然可以从中复制文本,因此需要像这样禁用 CTRL+C 快捷方式:
<TextBox Text="{Binding Password}"
FontFamily="pack://application:,,,/Resources/#password" >
<TextBox.InputBindings>
<!--Disable CTRL+C -->
<KeyBinding Command="ApplicationCommands.NotACommand"
Key="C"
Modifiers="Control" />
</TextBox.InputBindings>
</TextBox>
Run Code Online (Sandbox Code Playgroud)
Cod*_*y C 10
将passwordbox控件作为参数发送到login命令.
<Button Command="{Binding LoginCommand}" CommandParameter="{Binding ElementName=PasswordBox}"...>
Run Code Online (Sandbox Code Playgroud)
然后你可以调用CType(parameter, PasswordBox).Password你的viewmodel.
您可以通过简单地将以下值添加到您的控件属性来TextBox定制您的自定义。PasswordBoxFontFamilyTextBox
<TextBox
Text="{Binding Password}"
FontFamily="ms-appx:///Assets/PassDot.ttf#PassDot"
FontSize="35"/>
Run Code Online (Sandbox Code Playgroud)
在我的情况下,这非常有效。这将显示点代替实际文本(虽然不是星号(*))。
谢谢科迪,这非常有帮助.我刚刚为在C#中使用Delegate Command的人添加了一个示例
<PasswordBox x:Name="PasswordBox"
Grid.Row="1" Grid.Column="1"
HorizontalAlignment="Left"
Width="300" Height="25"
Margin="6,7,0,7" />
<Button Content="Login"
Grid.Row="4" Grid.Column="1"
Style="{StaticResource StandardButton}"
Command="{Binding LoginCommand}"
CommandParameter="{Binding ElementName=PasswordBox}"
Height="31" Width="92"
Margin="5,9,0,0" />
Run Code Online (Sandbox Code Playgroud)
public ICommand LoginCommand
{
get
{
return new DelegateCommand<object>((args) =>
{
// Get Password as Binding not supported for control-type PasswordBox
LoginPassword = ((PasswordBox) args).Password;
// Rest of code here
});
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
100806 次 |
| 最近记录: |