我在一个项目中使用 WPF 和 MVVM 并遇到以下问题:当我双击我的 Password DataGrid 单元格然后关注另一个单元格时,CellTemplate 中的 PasswordBox 变为空。另一方面,TextBox 保持其价值。(当我使用制表符时不会发生这种情况。)
这是我的单元格的 XAML 代码:
<DataGridTemplateColumn Header="Password">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<PasswordBox VerticalContentAlignment="Center"
Focusable="False" IsEnabled="False"
basics:PasswordBoxAssistant.BindPassword="True"
basics:PasswordBoxAssistant.BoundPassword="{Binding Path=Password, Mode=OneWay, ValidatesOnNotifyDataErrors=True}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<TextBox VerticalContentAlignment="Center"
Text="{Binding Path=Password, ValidatesOnNotifyDataErrors=True, UpdateSourceTrigger=PropertyChanged}"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
因为我想为我的 PasswordBox 使用绑定,所以我使用了这里定义的 PasswordHelper:http: //blog.functionalfun.net/2008/06/wpf-passwordbox-and-data-binding.html
我对 WPF 很陌生,在网上找不到任何有用的东西。
编辑
我将 PasswordBox 更改为 TextBox 并使用转换器将字符串更改为看起来像密码。现在它工作正常,看起来像我想要的那样!(而且它也更容易。我使用的 PasswordBox 和 Helper 似乎有点错误。)