Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16115 / 11236 / 2887
Регистрация: 21.04.2018
Сообщений: 33,036
Записей в блоге: 2

Реализация TextBox с функцией Скрыть/Показать пароль [WPF, Элд Хасп]

12.11.2021, 23:08. Показов 4049. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пример реализации основан на решении Semyon001 из темы Зашифрованный текст в TextBox.

Ссылка на проект шрифта: https://github.com/davidagraf/... ssword.ttf

И сам файл шрифта, чтобы не потерялся: password.7z

Пример использования.
Записывается в папку Resources - свойства "Действия при сборке - Ресурс".
В XAML ресурсах задаётся:
XML
10
11
12
13
    <Window.Resources>
        <vms:LauncherViewModel x:Key="viewModel" Pin="123456789"/>
        <FontFamily x:Key="passowrdFont">pack://application:,,,/Resources/Fonts/#password</FontFamily>
    </Window.Resources>
И сам TextBox с показом пароля (пина):
XML
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
    <Grid>
        <TextBox x:Name="pinBox" Text="{Binding Pin, UpdateSourceTrigger=PropertyChanged}">
            <TextBox.Style>
                <Style TargetType="TextBox">
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding IsChecked, ElementName=passwordHide}"
                                        Value="True">
                            <Setter Property="FontFamily" Value="{DynamicResource passowrdFont}"/>
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </TextBox.Style>
        </TextBox>
        <ToggleButton HorizontalAlignment="Right"
                        x:Name="passwordHide"
                        IsChecked="True">
            <FrameworkElement.Resources>
                <Style TargetType="ToggleButton">
                    <Setter Property="ToolTip" Value="Показать"/>
                    <Setter Property="Content" Value="{materialDesign:PackIcon Eye}"/>
                    <Style.Triggers>
                        <Trigger Property="IsChecked" Value="True">
                            <Setter Property="ToolTip" Value="Скрыть"/>
                            <Setter Property="Content" Value="{materialDesign:PackIcon EyeOff}"/>
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </FrameworkElement.Resources>
        </ToggleButton>
    </Grid>
1
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.11.2021, 23:08
Ответы с готовыми решениями:

WPF команды и MVVM. Часть 2. Всплытие команд. Реализация команды для списка элементов [WPF, Элд Хасп]
Тема из цикла https://www.cyberforum.ru/wpf-silverlight/thread2384523.html На практике часто встречаются случаи когда команда и кнопка...

Непростое Решение для простой часто встречающейся задачи. Привязка TextBox к численному свойству [WPF, Элд Хасп]
Тема из цикла https://www.cyberforum.ru/wpf-silverlight/thread2384523.html Привязка TextBox к численному свойству в режиме TwoWay и с ...

Библиотека элементов для реализации WPF MVVM Решений [WPF, Элд Хасп]
Решил собрать элементы используемые в темах в этом разделе. В библиотеку включаю элементы которые, на мой взгляд, имеют универсальное...

7
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16115 / 11236 / 2887
Регистрация: 21.04.2018
Сообщений: 33,036
Записей в блоге: 2
12.11.2021, 23:08  [ТС]
В связи с возникшими вопросами по реализации такого способа выкладываю полный проект со всеми ресурсами без использования сторонних пакетов.

ViewModel:
C#
1
2
3
4
5
6
7
namespace PasswordFont.ViewModels
{
    public class LauncherViewModel
    {
        public string? Password { get; set; }
    }
}
Окно с подключением всех ресурсов:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<Window x:Class="PasswordFont.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:PasswordFont"
        xmlns:vms="clr-namespace:PasswordFont.ViewModels"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800"
        FontSize="30">
    <Window.Resources>
        <vms:LauncherViewModel x:Key="viewModel" Password="123456789"/>
        <FontFamily x:Key="passowrdFont">pack://application:,,,/Resources/Fonts/#password</FontFamily>
        <ImageSource x:Key="open">pack://application:,,,/Resources/Icons/eye_open_icon.png</ImageSource>
        <ImageSource x:Key="closed">pack://application:,,,/Resources/Icons/eye_closed_icon.png</ImageSource>
        <DataTemplate x:Key="imageDataTemplate" DataType="ImageSource">
            <Image Source="{Binding}"/>
        </DataTemplate>
    </Window.Resources>
    <Grid>
        <Grid VerticalAlignment="Center" HorizontalAlignment="Center" 
              Width="200">
            <TextBox x:Name="pinBox" Text="{Binding Pin, UpdateSourceTrigger=PropertyChanged}">
                <TextBox.Style>
                    <Style TargetType="TextBox">
                        <Style.Triggers>
                            <DataTrigger Binding="{Binding IsChecked, ElementName=passwordHide}"
                                        Value="True">
                                <Setter Property="FontFamily" Value="{DynamicResource passowrdFont}"/>
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </TextBox.Style>
            </TextBox>
            <ToggleButton HorizontalAlignment="Right"
                        x:Name="passwordHide"
                        IsChecked="True"
                        ContentTemplate="{DynamicResource imageDataTemplate}" Height="{Binding ActualHeight, ElementName=pinBox, Mode=OneWay}">
                <FrameworkElement.Resources>
                    <Style TargetType="ToggleButton">
                        <Setter Property="ToolTip" Value="Показать"/>
                        <Setter Property="Content" Value="{DynamicResource open}"/>
                        <Style.Triggers>
                            <Trigger Property="IsChecked" Value="True">
                                <Setter Property="ToolTip" Value="Скрыть"/>
                                <Setter Property="Content" Value="{DynamicResource closed}"/>
                            </Trigger>
                        </Style.Triggers>
                    </Style>
                </FrameworkElement.Resources>
            </ToggleButton>
        </Grid>
    </Grid>
</Window>
Используются ресурсы самого шрифта и двух иконок открытый и закрытый глаз.
Исходники проекта: PasswordFont.7z
0
4 / 4 / 1
Регистрация: 15.04.2017
Сообщений: 346
12.03.2023, 11:21
Элд Хасп, ну я так понимаю, если шрифт не установлен на компе, то будут обычные символы?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16115 / 11236 / 2887
Регистрация: 21.04.2018
Сообщений: 33,036
Записей в блоге: 2
12.03.2023, 11:35  [ТС]
Цитата Сообщение от BOEHKOMAT Посмотреть сообщение
если шрифт не установлен на компе, то будут обычные символы?
Шрифт нужно подключать в сборке.
В систему его не нужно устанавливать.

Добавлено через 1 минуту
Выше же я показал как он из сборки забирается в ресурсы.
0
4 / 4 / 1
Регистрация: 15.04.2017
Сообщений: 346
12.03.2023, 11:50
XML
1
2
3
4
   <Window.Resources>
        <vms:LauncherViewModel x:Key="viewModel" Pin="123456789"/>
        <FontFamily x:Key="passowrdFont">pack://application:,,,/Resources/Fonts/#password</FontFamily>
    </Window.Resources>
Элд Хасп, а где нужно прописать?
Добавил проект папку Fonts и добавил туда этот шрифт и сделал "Действие при сборке"
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16115 / 11236 / 2887
Регистрация: 21.04.2018
Сообщений: 33,036
Записей в блоге: 2
12.03.2023, 12:16  [ТС]
BOEHKOMAT, я выше добавил исходники полного проекта.
0
4 / 4 / 1
Регистрация: 15.04.2017
Сообщений: 346
12.03.2023, 15:41
Элд Хасп, да, спасибо.

XML
1
2
3
4
5
6
7
8
9
<UserControl.Resources>
        <vms:AutorizationVM x:Key="viewModel" Password="123456789"/>
        <FontFamily x:Key="passowrdFont">pack://application:,,,/Resources/Fonts/#password</FontFamily>
        <ImageSource x:Key="open">pack://application:,,,/Resources/Icons/eye_open_icon.png</ImageSource>
        <ImageSource x:Key="closed">pack://application:,,,/Resources/Icons/eye_closed_icon.png</ImageSource>
        <DataTemplate x:Key="imageDataTemplate" DataType="ImageSource">
            <Image Source="{Binding}"/>
        </DataTemplate>
    </UserControl.Resources>
Но подскажите что тут не так, ругается на ImageSource.
Миниатюры
Реализация TextBox с функцией Скрыть/Показать пароль [WPF, Элд Хасп]  
0
4 / 4 / 1
Регистрация: 15.04.2017
Сообщений: 346
12.03.2023, 15:54
Элд Хасп, разобрался.спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.03.2023, 15:54
Помогаю со студенческими работами здесь

WPF команды и MVVM. Часть 1. [WPF, Элд Хасп]
Тема из цикла https://www.cyberforum.ru/wpf-silverlight/thread2384523.html Для использования и создания WPF команд в Net предусмотрен...

WPF конвертеры [Элд Хасп]
Тема из цикла https://www.cyberforum.ru/wpf-silverlight/thread2384523.html View получает данные от ViewModel, но часто бывают случаи...

WPF vs WinForms (для начинающих) [Элд Хасп]
Тема из цикла https://www.cyberforum.ru/wpf-silverlight/thread2384523.html Эту тему решил создать, так как очень часто сталкиваюсь с...

Элемент геометрии «Стрелка» [WPF, Элд Хасп]
Тема из цикла https://www.cyberforum.ru/wpf-silverlight/thread2384523.html Реализация сделана по вопросу отDissolve в теме...

Обсуждение темы "Библиотека элементов для реализации WPF MVVM Решений" [WPF, Элд Хасп]
Любое обсуждение, рекомендации, вопросы и т.п. по теме https://www.cyberforum.ru/wpf-silverlight/thread2738784.html В том числе по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru