2015-01-14 109 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