2012-04-05 37 views
1

如何在下面的代码中构建控件?ContentPresenter和GridViewRowPresenter不能互相包含或独占

  <StackPanel> 
       <!-- Принципиальные схемы --> 
       <ContentPresenter Content="{Binding principlies}" Grid.Row="4" Grid.Column="1" 
           ContentTemplate="{StaticResource ProjectContentExpander}"> 
        <ContentPresenter.Resources> 
         <Style TargetType="{x:Type TextBlock}" BasedOn="{StaticResource principlies}"/> 
        </ContentPresenter.Resources> 
       </ContentPresenter> 
      </StackPanel> 

错误:在FrameworkTemplate中,ContentPresenter和GridViewRowPresenter不能相互包含或排他。 如果删除Style块,错误消失。

回答

0
  <StackPanel> 
       <Border> 
        <ContentPresenter Content="{Binding principlies}" 
            ContentTemplate="{StaticResource ProjectContentExpander}"> 
         <ContentPresenter.Resources> 
          <Style TargetType="{x:Type TextBlock}" BasedOn="{StaticResource principlies}"/> 
         </ContentPresenter.Resources> 
        </ContentPresenter> 
       </Border> 
      </StackPanel> 

解决问题

1

我假设原则是在xaml中定义的DataTemplate的x:Key,但不能将DataTemplate(它继承FrameworkTemplate)设置为内容。这就是为什么你会得到这个例外。而且,ContentPresenter.Content属性是原理的数据绑定,该属性期望DependencyObject或数据项来自源。

请原谅,如果我误解了你的问题。提供更多的xaml将会定义一些亮点。

问候

+0

principlies是其中放置上述代码的用户控件的DataContext的的字段。如果删除Style块,错误消失。 – psct 2012-04-05 19:44:39