1

wpfでテキストボックス、パスワードボックス、トグルボタンを作成しました。ボタンをチェックするとパスワードが表示され、ボタンがチェックされていないときは文字が黒丸として表示される必要があります。私の問題は、アプリケーションを実行すると、ボタンがオフになっている (これはパスワードが非表示であることを意味します) が、パスワードがまだ表示されていることです。ボタンをチェックした直後、すべてが思い通りに機能します。最初からバインドするにはどうすればよいですか? 確認しただけでなく、

XML コード:

   <ToggleButton  Name="toggle1" Height="40" Padding="0" Width="56" Canvas.Left="131" Canvas.Top="0" BorderBrush="{x:Null}" IsChecked="{Binding ShowPassword}">

コード:

public bool IsPasswordVisible
    {
        get { return _IsPasswordVisible; }
        set
        {
            if (_IsPasswordVisible == value)
                return;
            _IsPasswordVisible = value;
            if(IsPasswordVisible)
            {
                passwordBox1.Visibility = System.Windows.Visibility.Collapsed;
                textbox1.Visibility = System.Windows.Visibility.Visible;
                textbox1.EditValue = passwordBoxEdit1.Password;
            }else{
                passwordBox1.Visibility = System.Windows.Visibility.Visible;
                textbox1.Visibility = System.Windows.Visibility.Collapsed;
                passwordBox1.Password = textEdit1.Text;
            }
            if (PropertyChanged != null)
                PropertyChanged(this, new PropertyChangedEventArgs("ShowPassword"));
        }
    }       

    public MainWindow()
    {
        InitializeComponent();

        this.DataContext = this;

    }

    public event PropertyChangedEventHandler PropertyChanged;

    #region OnPropertyChanged
    /// <summary>
    /// Triggers the PropertyChanged event.
    /// </summary>
    protected void OnPropertyChanged(string propertyName)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (handler != null)
            handler(this, new PropertyChangedEventArgs(propertyName));
    }
    #endregion
4

4 に答える 4

2

datacontext を確認した後、IsPasswordVisible を false に設定します

this.DataContext = this;
IsPasswordVisible = false;

以下のコードを IsPasswordVisible セッターから削除します

if (_IsPasswordVisible == value)
                return;
于 2013-09-18T09:00:56.000 に答える