Windows IoT UWP Pivot项目在内容对话框中带有密码框



我正在尝试在具有内容对话框的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
        }     
    }

相关内容

  • 没有找到相关文章

最新更新