WPF窗口模板资源

时间:2010-07-11 04:03:52

标签: resources templates wpf-controls window

我正在尝试定义一个窗口模板,可供其他程序集中的窗口使用。我定义了一个窗口模板并将其存储在某个程序集中的资源字典中。之后,我在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'不匹配。”我在谷歌找不到任何有关此例外的内容。

请帮我理解我的代码中有什么问题?

0 个答案:

没有答案