2015-01-14 107 views
0

我在使用某个GroupBox样式不止一次时发生了XAML分析异常。我保持UserControl.Resources的风格。以GroupBox样式设置GroupBox的标题

这里是事业XAML解析异常的简化样式的例子:

<Style x:Key="MyGroupBoxStyle" TargetType="GroupBox" BasedOn="{StaticResource {x:Type GroupBox}}"> 
    <Setter Property="BorderThickness" Value="5" /> 
    <Setter Property="Header" Value="Hello World!" /> 
</Style> 

这里是另外一个造成问题。

<Style x:Key="MyGroupBoxStyle" TargetType="GroupBox" BasedOn="{StaticResource {x:Type GroupBox}}"> 
    <Setter Property="BorderThickness" Value="5" /> 
    <Setter Property="Header"> 
     <Setter.Value> 
      Hello World! 
     </Setter.Value> 
    </Setter> 
</Style> 

这可是一个不导致一个问题:

<Style x:Key="MyGroupBoxStyle" TargetType="GroupBox" BasedOn="{StaticResource {x:Type GroupBox}}"> 
    <Setter Property="BorderThickness" Value="5" /> 
    <Setter Property="Header"> 
     <Setter.Value> 
      <TextBlock Text="Hello World!" /> 
     </Setter.Value> 
    </Setter> 
</Style> 

同样,当我使用的样式上多个GroupBox这只是一个问题。如果我只使用它一次,我没有得到XAML解析异常。它不一定只是一个TextBlock。我认为这是任何UIElement

任何想法?谢谢!

+0

不太确定,但BasedOn =“{StaticResource {x:Type GroupBox}}”对我来说似乎是错误的。没有这个尝试。 – Xeun

+0

删除'BasedOn'时仍不起作用。以这种方式使用'BasedOn'允许我继续为'GroupBox's使用先前定义的通用'Style'。 – savetruman

回答

1

您不能将样式中标题的内容设置为另一个UI控件。尝试创建一个数据模板。

<Window.Resources> 
    <Style x:Key="MyGroupBoxStyle" TargetType="GroupBox" BasedOn="{StaticResource {x:Type GroupBox}}"> 
     <Setter Property="BorderThickness" Value="5" /> 
     <Setter Property="HeaderTemplate"> 
      <Setter.Value> 
       <DataTemplate> 
        <TextBlock Text="Hello World!!!!!!"/> 
       </DataTemplate>      
      </Setter.Value> 
     </Setter> 
    </Style> 
</Window.Resources> 
<StackPanel> 
    <GroupBox Style="{StaticResource MyGroupBoxStyle}" Height="200" Width="200"/> 
    <GroupBox Style="{StaticResource MyGroupBoxStyle}" Height="200" Width="200"/> 
</StackPanel> 
+0

就是这样!谢谢! – savetruman