我为项目使用WPF和MVVM并遇到以下问题:当我双击我的密码DataGrid单元格然后专注于另一个单元格时,CellTemplate中的PasswordBox变为空。另一方面,TextBox保持其价值。 (当我使用tab时,这不会发生。)
这是我单元格的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并使用转换器将String更改为密码。现在它工作正常,看起来我希望它看起来! (而且它也更容易。与我使用的Helper结合使用的PasswordBox似乎有点麻烦。)