我正在尝试在具有内容对话框的PivotItem中实现一个密码框。我想确定使用Pointerpatsing在单击枢纽时是否适合触发对话框以获取密码?一旦单击枢纽,如何处理事件。谢谢。
xaml;
Title="Login"
PrimaryButtonText="OK"
SecondaryButtonText="Cancel"
PrimaryButtonClick="ContentDialog_PrimaryButtonClick"
SecondaryButtonClick="ContentDialog_SecondaryButtonClick">
<Grid>
<StackPanel>
<PasswordBox x:Name="passwordBox" Width="300" Height="30" PlaceholderText="Enter password" PasswordChar="*"
PasswordChanged="PasswordBox_PasswordChanged"/>
<TextBlock x:Name="statusText" Margin="3,10,2,10" Height="22"/>
</StackPanel>
</Grid>
更新-24-11-2017我不确定这是最好的是验证我的密码。我也想在content dialog
关闭后找出答案,在哪里可以进一步扩展XAML代码?希望我在这里清楚地表达我的情况。谢谢。
<PivotItem Header="Settings" x:Name="settings" PointerPressed="settings_PointerPressed" >
<ContentDialog Title="Login" x:Name="loginDialog"
PrimaryButtonText="OK"
SecondaryButtonText="Cancel"
PrimaryButtonClick="OK_PrimaryButtonClick"
SecondaryButtonClick="Cancel_SecondaryButtonClick">
<Grid>
<StackPanel>
<PasswordBox x:Name="passwordBox" Width="300" Height="40" PlaceholderText="Enter PIN" PasswordChar="*"
PasswordChanged="passwordBox_PasswordChanged" IsPasswordRevealButtonEnabled="False">
<PasswordBox.InputScope>
<InputScope>
<InputScope.Names>
<InputScopeName NameValue="NumericPin"/>
</InputScope.Names>
</InputScope>
</PasswordBox.InputScope>
</PasswordBox>
<TextBlock x:Name="passwordStatus" Margin="3,10,2,10" Height="22"/>
</StackPanel>
</Grid>
</ContentDialog>
</PivotItem>
private async void settings_PointerPressed(object sender, PointerRoutedEventArgs e)
{
if(isPasswordGranted==false)
{
await loginDialog.ShowAsync();
//PasswordBox passwordBox = new PasswordBox();
//passwordBox.Header = "Enter password";
InputScope scope = new InputScope();
InputScopeName scopeName = new InputScopeName();
scopeName.NameValue = InputScopeNameValue.NumericPin; //default = Password
scope.Names.Add(scopeName);
passwordBox.InputScope = scope;
}
}
private void OK_PrimaryButtonClick(ContentDialog sender, ContentDialogButtonClickEventArgs args)
{
if (passwordBox.Password == pinNumber)
{
passwordStatus.Text = "Password Granted!";
isPasswordGranted = true;
}
else pivot.SelectedItem = home;
}
private void Cancel_SecondaryButtonClick(ContentDialog sender, ContentDialogButtonClickEventArgs args)
{
pivot.SelectedItem = home;
}
是的,它适合通过使用Pointerspatelsed Event触发密码的对话框。当指针指示在PivotItem元素的边界区域内指示按下操作(例如降低,鼠标按钮向下,笔下或触摸板按钮)时,将调用此事件方法。请参阅下面的代码:
*。xaml
<PivotItem Header="PivotItem Header - 1" PointerPressed="PivotItem_PointerPressed">
<ContentDialog Title="Login" x:Name="contentDialogForPwd"
PrimaryButtonText="OK"
SecondaryButtonText="Cancel"
PrimaryButtonClick="ContentDialog_PrimaryButtonClick"
SecondaryButtonClick="ContentDialog_SecondaryButtonClick">
<Grid>
<StackPanel>
<PasswordBox x:Name="passwordBox" Width="300" Height="30" PlaceholderText="Enter password" PasswordChar="*"
PasswordChanged="passwordBox_PasswordChanged"/>
<TextBlock x:Name="statusText" Margin="3,10,2,10" Height="22"/>
</StackPanel>
</Grid>
</ContentDialog>
</PivotItem>
*。CS
private async void PivotItem_PointerPressed(object sender, PointerRoutedEventArgs e)
{
ContentDialogResult result = await contentDialogForPwd.ShowAsync();
if(result == ContentDialogResult.Primary)
{
//To do something when clicking Primary button
}
else if (result == ContentDialogResult.Secondary)
{
//To do something when clicking Secondary button
}
}