主题\ Generic.xaml:
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="WPF Commons;component/Controls/Layout/Foo/FooItem.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
控制\布局\富\ FooItem.xaml:
<Style TargetType="{x:Type l:FooItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type l:FooItem}">
<Border>
<ContentPresenter ContentSource="Header" />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
如果我将整个样式复制到我的usercontrol资源中,它可以正常工作。但是,如果我不这样做,则usercontrol显示为空。在Expression Blend 4中,我右键单击并选择Edit Template
&gt;,但它不会让我选择Edit a Copy...
,这会让我相信某些内容严重错误并且Generic.xaml不是正确装载。我认为它是Generic.xaml,因为如果我删除MergedDictionary调用并将xaml样式直接复制/粘贴到Generic.xaml中,它仍然无效。
答案 0 :(得分:31)
我会猜测你改变了你的AssemblyInfo.cs文件并更改(或删除)了以下行:
[assembly: ThemeInfo(
ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
//(used if a resource is not found in the page,
// or application resource dictionaries)
ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
//(used if a resource is not found in the page,
// app, or any theme specific resource dictionaries)
)]
你需要告诉大会你的ThemeInfo。 :)
答案 1 :(得分:1)
在您需要的Properties \ AssemblyInfo.cs的开头(注意Silverlight中没有使用/需要这个): 使用System.Windows;
...
请注意,如果项目未在解决方案资源管理器中显示“属性”节点,则必须使用正确的模板创建新项目(对于WPF自定义控件),或者右键单击项目,选择“属性”,然后按下Assembly Information按钮并输入一些虚拟值,然后单击OK以创建Properties节点(也创建一个Properties子文件夹和AssemblyInfo.cs文件)。
您可以展开(下拉)解决方案资源管理器中的特殊“属性”节点,然后打开AssemblyInfo.cs并添加上述内容(如果缺少)