0

我正在尝试在带有内容对话框的数据透视项中实现密码框。我想知道使用pointerpressed单击数据透视项是否适合触发密码对话框?此外,一旦单击枢轴项,如何处理事件。谢谢。

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;
    }
4

1 回答 1

1

是的,使用PointerPressed事件触发密码对话框是合适的。当指针在 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
        }     
    }
于 2017-11-22T02:23:44.273 回答