2015-12-20 7 views
0

Я пытаюсь создать приложение Windows 10 со страницей настроек, которая позволяет пользователю вводить учетные данные, которые приложение будет использовать для подключения к внешней службе. Я хочу сохранить эти учетные данные в PasswordVault.Связывание элементов управления XAML с сложным типом данных (PasswordCredential)

Я использовал Template10 Шаблон10 в качестве отправной точки. Я добавил TextBox и PasswordBox в параметр PivotItem. Я добавил член PasswordCredential в ISettingsService. И я добавил реализацию класса SettingsService для хранения и получения объекта PasswordCredential из хранилища.

Теперь мне нужно подключить TextBox и PasswordBox к свойствам UserName и Password объекта PasswordCredental. Также существует некоторая логика, которая должна выполняться при обновлении пары имя пользователя и пароля. Я новичок в XAML, и я совсем не понимаю, как это сделать. Какие-либо предложения?

+0

Если вы уже знаете, как связать в XAML, посмотрите на интерфейс [IValueConverter] (https://msdn.microsoft.com/it-it/library/windows/apps/windows.ui.xaml.data. ivalueconverter) – fillobotto

+0

@FilippoB Это ново для меня, но я пытаюсь использовать реализацию IValueConverter. Однако, похоже, я не могу получить ссылку на этот класс для разрешения в XAML. Я пытаюсь установить значение Text в значение «{Binding Path = PasswordCredentialObject, Converter = {StaticResource Helpers: PasswordCredentialConverter}, ConverterParameter = UserName}», и я добавил ссылку на пространство имен xmlns: Helpers = "using: WindowsApp1.Helpers », но он не может разрешить ссылку. –

+0

Выяснил ссылочную проблему. Я забыл объявить статический ресурс для конвертера в XAML моей страницы. –

ответ

1

это проще, чем вы думаете. Предполагая, что эта модель:

public class UserCredentials : BindableBase 
{ 
    string _userName = default(string); 
    public string UserName { get { return _userName; } set { Set(ref _userName, value); } } 

    string _password = default(string); 
    public string Password { get { return _password; } set { Set(ref _password, value); } } 
} 

Вы можете сделать это в XAML:

<!-- login form --> 
<StackPanel Grid.Row="1" Margin="20, 16" DataContext="{Binding ElementName=ThisPage}"> 
    <TextBox Header="Username" Text="{Binding UserCredentials.UserName, Mode=TwoWay}" /> 
    <TextBox Header="Password" Text="{Binding UserCredentials.Password, Mode=TwoWay}" /> 
    <Button Click="LoginClicked" Margin="0,12,0,0" HorizontalAlignment="Right">Login</Button> 
</StackPanel> 

имеет смысл? Чтобы помочь, я добавил это в проект Sample в репозитории GitHub для Template 10, если вы хотите, чтобы он работал.

Удачи.

Смежные вопросы