как отобразить текст в символе пароля или в маске для содержимого пароля для просмотра списка WPF - PullRequest
0 голосов
/ 13 апреля 2020

Как отобразить столбец пароля в виде пароля или маски для просмотра списка в WPF.

<GridViewColumn  Header="Password">
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <TextBox Text="{Binding Password}" Width="100"/>
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>

Я использую Observable Collection, и пользователь также может изменить пароль, и я хочу обновить его после обновления пароля?

 _people = new ObservableCollection<Person>
        {
            new Person() {Id = 1, Name = "Bob", Age = 45, Password = "password1"},
            new Person() {Id = 2, Name = "Sarah", Age = 25, Password = "password2"},
            new Person() {Id = 3, Name = "Tim", Age = 40, Password = "password3"}
        };


 public class Person
{
    public int Id { get; set; }

    public string Name { get; set; }

    public int Age { get; set; }

    public string Password { get; set; }

}

1 Ответ

0 голосов
/ 13 апреля 2020

Что ж, компонент TextBox не может связываться с переменной Password, как вы ожидаете, если вы не добавите механизм, чтобы уведомить изменения ввода TextBox обратно в экземпляр класса.

Измените класс как следует:

public class Person : INotifyPropertyChanged
{
    public int Id { get; set; }

    public string Name { get; set; }

    public int Age { get; set; }

    private string _password;
    public string Password { 
        get { return this._password, }
        set {
            if (value != this._password) {
                this._password = value;
                this.OnPropertyChanged("Password");
            }
        }
    }


    public event PropertyChangedEventHandler PropertyChanged;

    protected virtual void OnPropertyChanged(
        string propertyName
        )
    {
        if (this.PropertyChanged != null)
        {
            this.PropertyChanged.Invoke(
                this,
                new PropertyChangedEventArgs(propertyName)
                );
        }
    }

}

Этот шаблон говорит каркасу привязывать переменную в обоих направлениях: к TextBox и к TextBox.

Обратите внимание, что приведенный выше шаблон довольно многословно, потому что соответствует "старой" Net Framework 4.5. Самые последние версии C#/Net допускают более компактный стиль кодирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...