所以我构建了一个类库(通用窗口),以便在尽可能多的应用程序中重用我的所有控件。
我已经编写了所有控件,现在我想使用它们,但是当我在实际应用程序中使用这些控件时,Designer会中断,我无法构建应用程序。
这意味着无法找到我的样式文件。
所以我的解决方案结构如下:
样式控件中使用的样式如下:
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Styles/SampleStyle.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
这完全有效,但当我在主页中使用控件时,就像这样
<Page
x:Class="SandBoxSampleApp.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:SandBoxSampleApp"
xmlns:SampleControls="pack://application:,,,/SandBoxClassLibrary:component/Controls"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
xmlns:UsingSampleControls="using:SandBoxClassLibrary.Controls"
>
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<UsingSampleControls:SampleUserControl/>
</Grid>
</Page>
设计师休息等等所以我读了很多文章,但似乎我没有得到它。即使我在互联网上看到我必须访问这样的控件,InteliSense也设法识别控件等等
xmlns:SampleControls="pack://application:,,,/SandBoxClassLibrary:component/Controls"
这是我的示例项目: SampleProject
答案 0 :(得分:1)
UserControl元素具有资源查找行为的特殊情况,因为它具有定义范围和使用范围的固有概念。从其定义范围生成XAML资源引用的UserControl必须能够支持在其自己的定义范围查找序列中查找该资源 - 也就是说,它无法访问应用程序资源。从UserControl使用范围,资源引用被视为在查找序列中朝向其使用页面根目录(就像从加载的对象树中的对象做出的任何其他资源引用一样)并且可以访问应用程序资源。
所以你应该将 SampleStyle.xaml 放在UserControl的相同根位置,也就是说 SampleStyle.xaml 文件应放入控制文件夹。