WF再ホスティングデザイナーソリューションで使用されているWPF PropertyGridのパスワード(マスク)フィールドを作成しようとしています。私はそれのセキュリティ要素には興味がないことに注意してください。私はちょうどユーザーからパスワードを隠したい。私は本当に私は考えが実装にシンプルだっただろうが、私は最終的には本当に助けたこの偉大な記事見出した何かに苦労:記事ごとにPasswordBoxAssistantクラスを作成した後WPF PropertyGridのパスワード/マスクフィールドは保持されません
WPF PasswordBox and Data binding
を、私はWPFユーザーコントロールを作成しました以下のXAMLとコード:
XAMLコードビハインド
<Grid>
<PasswordBox x:Name="PasswordBox"
Background="Green"
local:PasswordBoxAssistant.BindPassword="true"
local:PasswordBoxAssistant.BoundPassword="{Binding Password,
Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
</Grid>
:
public partial class PasswordUserControl : UserControl
{
public PasswordUserControl()
{
InitializeComponent();
}
public static readonly DependencyProperty PasswordProperty =
DependencyProperty.Register("Password",
typeof(string), typeof(PasswordUserControl),
new FrameworkPropertyMetadata(PasswordChanged));
public string Password
{
get
{
return (string)GetValue(PasswordProperty);
}
set
{
SetValue(PasswordProperty, value);
}
}
private static void PasswordChanged(DependencyObject source,
DependencyPropertyChangedEventArgs e)
{
if (e.NewValue != null)
{
(source as PasswordUserControl)?.UpdatePassword(e.NewValue.ToString());
}
else
{
(source as PasswordUserControl)?.UpdatePassword(string.Empty);
}
}
private void UpdatePassword(string newText)
{
PasswordBox.Password = Password;
}
}
それから私は(PasswordEditor.csと呼ばれる)PropertyValueEditor
クラスを作成し、私は、これは働いていないと私は正しく設定していないよ一部であると仮定しています。
私はのUserControl
フィールドからValue
フィールドにPasswordPropertyをバインドします。
public class PasswordEditor : PropertyValueEditor
{
public PasswordEditor()
{
this.InlineEditorTemplate = new DataTemplate();
FrameworkElementFactory stack = new FrameworkElementFactory(typeof(StackPanel));
FrameworkElementFactory passwordBox = new
FrameworkElementFactory(typeof(PasswordUserControl));
Binding passwordBoxBinding = new Binding("Value") { Mode = BindingMode.TwoWay };
passwordBox.SetValue(PasswordUserControl.PasswordProperty, passwordBoxBinding);
stack.AppendChild(passwordBox);
this.InlineEditorTemplate.VisualTree = stack;
}
}
私はStringValue
にだけでなく、私が発見した他のWF PropertyValueEditorサンプルあたりのが、無駄にそれを設定しようとしました。
パスワード(マスクされた)フィールドがWPF PropertyGridで正しく表示されていますが、別のWFアクティビティに切り替えてパスワードフィールドを含むスイッチに戻っても値が保持されません。
誰でも正しい方向に向けることができますか?
ありがとうございました。
もう一度、助けていただければ幸いです。
ありがとうございました。