【C++】张安心乐意的 UWP 开发笔记:定制 ContentDialog 样式

  我急需一个背景透明的
ContentDialog,像下图一律。怎么样定制?写了一个概括的示范(https://github.com/ZhangGaoxing/uwp-demo/tree/master/ContentDialogDemo

C++ 1

  首先在档次里新建一个资源字典,并在 App.xaml
添加以下代码将此资源字典合并

C++ 2

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Style.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

  那时新增进的资源字典照旧空的,大家需求找到 ContentDialog
的默许样式。那几个默许样式在已安装的 Windows 10 SDK 中被提供,比如 SDK
默认安装在 C
盘的时候,控件样式字典 generic.xaml 可以在 C:\Program Files
(x86)\Windows
Kits\10\DesignTime\CommonConfiguration\Neutral\UAP\10.0.14393.0\Generic

那里找到。找到后用 Visual Studio 打开,如下图。

C++ 3

  接下去按 Ctrl+F 搜索 ContentDialog
找到默许样式复制到刚才新建的资源字典中,然后根据需要定制样式即可。

C++ 4

  像自己索要的晶莹 ContentDialog 只必要更改 Property
BackgroundValue 值为 Transparent
即可。注意不要忘记给一个 x:Key
值,也就是起个称呼,那里为 x:Key=”TransparentDialog” 。

 

  样式定制已毕,并且资源字典也联合已毕,上边就是要在代码中去调用了。资源字典的调用也是靠键值对,输入相应的键来重临对应的值。

  在档次适当的职分新建一个 Style 类型的字段,用来取得样式。

Style transparent = (Style)Application.Current.Resources["TransparentDialog"];

  样式获取成功后安装 ContentDialog 的 Style 属性即可

var contentDialog = new ContentDialog()
{
    Content = new Content("This is a transparent ContentDialog."),
    PrimaryButtonText = "确定",
    FullSizeDesired = false
};

contentDialog.Style = transparent;

contentDialog.PrimaryButtonClick += (_s, _e) =>
{
    contentDialog.Hide();
};
await contentDialog.ShowAsync();

  那样,一个定制样式的 ContentDialog 就马到成功了。