【发布时间】:2011-08-04 02:03:15
【问题描述】:
主题\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>
Controls\Layout\Foo\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>
如果我将整个样式复制到我的用户控件资源中,它就可以正常工作。但是,如果我不这样做,用户控件就会显示为空。在 Expression Blend 4 中,我右键单击并选择了 Edit Template>,但它不允许我选择 Edit a Copy...,这让我相信某些事情严重错误并且 Generic.xaml 没有正确加载。我认为它是 Generic.xaml,因为如果我删除 MergedDictionary 调用并将 xaml 样式直接复制/粘贴到 Generic.xaml 中,它仍然不起作用。
【问题讨论】:
-
你能展示你的FooItem代码吗?通常,不应重新模板化 UserControls(即设置 Template 属性),因为它不能按预期工作。
-
FooItem.cs 暂时是空的,我想确保布局正确,稍后慢慢添加其他 DependencyProperties 和逻辑。
-
FooItem 从何而来?
-
这是因为我试图改变 ThemeInfo 的东西,就像 myermian 说的那样。不过还是谢谢。
标签: wpf custom-controls resourcedictionary generic.xaml