为 UWP 应用程序实现 TeachingTip 控件

Implementing TeachingTip control for a UWP App

要在我的 UWP 应用程序中安装 TeachingTip-control,我已完成以下步骤:

  1. 在我的项目中通过 Nuget 安装 Microsoft.UI.Xaml
  2. <XamlControlsResources xmlns = "using:Microsoft.UI.Xaml.Controls" /> 添加到 App.xaml
  3. 导入的命名空间xmlns:controls="using:Microsoft.UI.Xaml.Controls"

我实现了 TeachingTip-control 如下:

<Button x:Name="BackButton"
        Background="{x:Null}"
        Content="Back"
        Click="BackButton_Click">
    <Button.Resources>
        <controls:TeachingTip x:Name="ToggleThemeTeachingTip"
                              Target="{x:Bind BackButton}"
                              Title="Change themes without hassle"
                              Subtitle="It's easier than ever to see control samples in both light and dark theme!"
                              CloseButtonContent="Got it!">
        </controls:TeachingTip>
    </Button.Resources>
</Button>

<Button x:Name="TeachingTipButton"
        Click="TeachingTipButton_OnClick">
</Button>


private void TeachingTipButton_OnClick(object sender, RoutedEventArgs e)
{
    ToggleThemeTeachingTip.IsOpen = true;
}

当我调用该函数时,出现以下 DISABLE_XAML_GENERATED_BREAK_ON_UNHANDLED_EXCEPTION 错误(可能是 UI 错误),我不明白:

可能是什么问题?为什么我的代码不起作用?

编辑: 我现在确定错误是由于 App.xaml。我安装完Nuget包Microsoft.UI.Xaml后,预计会在App.xaml中添加如下代码:

但我已经在 App.xaml 其他设置和资源中:

当我尝试仅添加 App.xaml 中的行时,出现关键错误:

<XamlControlsResources xmlns="using:Microsoft.UI.Xaml.Controls"/>

如果我像这样给资源条目一个键:

<XamlControlsResources x: Key = "XamlControlsResources" xmlns = "using: Microsoft.UI.Xaml.Controls" />

出现完全不同的错误:

Windows.UI.Xaml.Markup.XamlParseException: "The text for this error is not found.

Can not find a Resource with the Name / Key TeachingTipBackgroundBrush

如何在我的 App.xaml 中正确添加资源 <XamlControlsResources xmlns="using:Microsoft.UI.Xaml.Controls"/>

我将你的代码粘贴到我的项目中并且它有效。但是,您在上面提供的代码没有触发按钮的内容,因此唯一出现的按钮是顶部按钮。您确定您没有因为 BackButton_Click 中的代码而不是 TeachingTipButton_OnClick 中的代码而失败吗?

您可以从 Application.Resources

中删除对 Microsoft.UI.Xaml.Controls 的重复引用

我通过删除 ContentDialog Size 样式Default Button 样式 解决了我的问题,这样 <Application.Resources> 只有 <XamlControlsResources x: Key = "XamlControlsResources" xmlns = "using: Microsoft.UI.Xaml.Controls" /> 作为单个条目。就我而言,不幸的是,<Application.Resources> </Application.Resources> 中的多个条目不被接受。

您的 App.xaml 文件需要如下所示:

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <XamlControlsResources xmlns="using:Microsoft.UI.Xaml.Controls" />
        </ResourceDictionary.MergedDictionaries>
        <!-- Other styles here -->
        <Style TargetType="Button">
          ...
        </Style>
    </ResourceDictionary>
</Application.Resources>