我正在尝试定义一个窗口模板,可供其他程序集中的窗口使用。我定义了一个窗口模板并将其存储在某个程序集中的资源字典中。之后,我在XAML中的窗口定义中的其他程序集中使用此模板。它看起来模板已被接受,我可以在VS-2010设计器中看到更新的窗口,但是当我向该窗口添加一个新控件时,控件从窗口中消失但仍然存在于XAML代码中。我还尝试明确地应用相同的模板,它运作良好。
项目中包含模板定义的generic.xaml的Xaml代码,设置了ThemeInfo属性,该文件的BuildAction属性为Page。
<ControlTemplate x:Key="{ComponentResourceKey TypeInTargetAssembly= {x:Type local:DialogResources}, ResourceId=DialogTemplate}">
<Border Width="Auto" Height="Auto" Name="windowFrame"
BorderBrush="#395984"
BorderThickness="1"
CornerRadius="0,20,20,20"
Background="AliceBlue">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<TextBlock Margin="1" Padding="5" Text="Template Window" FontWeight="Bold"/>
<Border Background="#B5CBEF" Grid.Row="1" CornerRadius="0,0,20,20" >
<AdornerDecorator>
<ContentPresenter/>
</AdornerDecorator>
</Border>
</Grid>
</Border>
</ControlTemplate>
DialogRespources - 是一个在MyProg.Resources程序集中定义的空类。 现在我在其他程序集中使用此模板,如下所示:
在这个窗口中我添加了一个按钮,但我无法看到它。当我明确定义TemplateControl(不使用资源)时,我可以看到它。
另一个问题是,当在资源中使用TargetType =“{x:Type Window}”作为模板时,我得到以下设计器异常:“'Window'ControlTemplate TargetType与模板化类型'WindowInstance'不匹配。”我在谷歌找不到任何有关此例外的内容。
请帮我理解我的代码中有什么问题?