如何在 UWP 类库中使用 XAML 静态资源和设计时数据
Posted
技术标签:
【中文标题】如何在 UWP 类库中使用 XAML 静态资源和设计时数据【英文标题】:how to use XAML static resources and design time data in UWP class libraries 【发布时间】:2018-05-15 09:44:27 【问题描述】:我是一名具有 WPF 经验的程序员,我开始使用 UWP 进行编程。 我几乎所有的 XAML 代码都与我设法克服的一些异常兼容。
起初我在一个独立的应用程序中尝试了所有的东西,但现在是时候创建可重用的用户控件了,为此我创建了一个 UWP 类库,我在其中复制了我编写并工作的用户控件代码在应用程序中很好,但在库中,NET 类的实例似乎不是在资源字典或设计时数据扩展中创建的。
这是在应用程序中工作但在库中不工作的用户控制 XAML 代码(它是使用带有“d:”的设计时数据的版本),问题是 Canvas.Left 和 Canvas.Top 绑定不't 获取源值(图像出现在 Canvas 0,0 位置)。
<UserControl x:Class="NameSpace.XXXX" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:NameSpace" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" d:DesignHeight="355" d:DesignWidth="430">
<Canvas Height="355" Width="430" d:DataContext="d:DesignInstance Type=local:LocalClass, IsDesignTimeCreatable=True">
<Image x:Name="TI11" Source="Assets/Images/Image11.png" Canvas.Left="Binding T11L" Canvas.Top="Binding T11T" RenderTransformOrigin="0.5,0.5" Opacity="0.65" Height="071.053" Width="064.433"/>
......
</Canvas>
</UserControl>
我搜索过类似的问题,也看到过创建独立UWP控件库的文章,但没有找到任何关于这个问题的参考。
有谁知道是否需要做任何特别的事情才能在 UWP 库中使用静态资源 NET 类和设计时数据?
【问题讨论】:
“但在库中,NET 类的实例似乎不是在资源字典或设计时数据扩展中创建的。”能否以更清晰和详细的方式描述您的问题?请用“用户控件”显示一些相关代码。 虽然我认为没有创建实例,但可能是由于其他原因绑定在库中不起作用。过段时间我会写出失败的代码(当我问这个问题时,我认为这是我不知道的关于 UWP 的一些简单的事情,并且没有必要编写代码) 【参考方案1】:我的问题的答案是,您无需执行任何特殊操作即可在 UWP 库中使用设计时数据,它应该像在应用程序中一样工作。
我认为提出问题的问题是暂时的,仅影响针对 Fall Creators Update 的库。在他们修复它之前,转机是针对创作者更新而不是秋季创作者更新。
事实是,如果您使用 VS 2017 和我的示例代码创建一个针对 Fall Creators Update 的 UWP 库,则设计时数据绑定不起作用。
如果您使用 Blend 2017 打开库并尝试使用数据窗口生成设计时数据,则 Blend 会通知数据窗口功能不能用于针对 Fall Creators Update 的项目(我附上了 Blend 的消息)
我已经在https://developercommunity.visualstudio.com/content/problem/172286/design-time-data-in-uwp-library-not-working-in-vs.html报告了这个问题
【讨论】:
以上是关于如何在 UWP 类库中使用 XAML 静态资源和设计时数据的主要内容,如果未能解决你的问题,请参考以下文章