如何在我自己的UWP应用中从Edge本机应用重新创建反馈窗口?

问题描述

Edge browser's feedback looks like this

这是一个只有关闭按钮且大小固定的窗口。 我们如何从UWP应用(XAML和c#)创建相同的内容。 UWP API不允许固定窗口大小,甚至我们也不能从窗口标题栏中禁用最小化和最大化按钮

解决方法

UWP基于Page,它不同于Win32应用程序(它们通常由FormWindow组成)。根据您的需要,我建议您使用ContentDialog控件,该控件可以模拟这样的反馈窗口并提供类似的体验。这是一个示例:

FeedbackDialog.xaml

<ContentDialog
    ...
    Title="Send Feedback"
    PrimaryButtonText="Send"
    CloseButtonText="Cancel"
    PrimaryButtonClick="ContentDialog_PrimaryButtonClick"
    SecondaryButtonClick="ContentDialog_SecondaryButtonClick">

    <Grid MaxWidth="400">
        <ScrollViewer HorizontalScrollMode="Disabled">
            <StackPanel>
                <TextBox Header="Describe what's happening" HorizontalAlignment="Stretch" AcceptsReturn="True"
                         MinHeight="160" PlaceholderText="Remember not to include personal info like phone numbers"
                         TextWrapping="Wrap" x:Name="DescribeTextBox"/>
                
                <TextBox Header="URL" Margin="0,15,0" HorizontalAlignment="Stretch" TextWrapping="NoWrap"
                         x:Name="UrlTextBox"/>
                
                <CheckBox Content="Include email address" Margin="0,0" x:Name="EmailEnabledCheckBox"/>
                <TextBox IsEnabled="{Binding ElementName=EmailEnabledCheckBox,Path=IsChecked}" HorizontalAlignment="Stretch"
                         Margin="0,10,0" x:Name="EmailAddressTextBox"/>
                
                <!-- other controls... -->
            </StackPanel>
        </ScrollViewer>
    </Grid>
</ContentDialog>

如果我们有反馈按钮,我们可以像这样使用它

用法

private async void FeedbackButton_Click(object sender,RoutedEventArgs e)
{
    var dialog = new FeedbackDialog();
    await dialog.ShowAsync();
}

使用ContentDialog创建表单是UWP的常见做法。对于较长的表单,可以在对话框不够高时添加ScrollViewer来滚动内容。

其样式与您提供的Edge浏览器的样式有些不同,您可以在此基础上对其进行修改。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...