การตั้งค่า Header ของ GroupBox ในรูปแบบ GroupBox

ฉันได้รับข้อยกเว้นในการแยกวิเคราะห์ XAML เมื่อใช้ GroupBox Style บางอย่างมากกว่าหนึ่งครั้ง ฉันกำลังรักษาสไตล์ใน UserControl.Resources

นี่คือตัวอย่างของรูปแบบที่เรียบง่ายซึ่ง ไม่ ทำให้เกิดข้อยกเว้นในการแยกวิเคราะห์ 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

มีความคิดอะไรบ้าง? ขอบคุณ!


person savetruman    schedule 14.01.2015    source แหล่งที่มา
comment
ไม่ค่อยแน่ใจ แต่ BasedOn={StaticResource {x:Type GroupBox}} ดูเหมือนผิดสำหรับฉัน ลองโดยไม่ต้องสิ่งนี้   -  person Xeun    schedule 14.01.2015
comment
ยังคงใช้งานไม่ได้เมื่อลบ BasedOn การใช้ BasedOn ในลักษณะนั้นทำให้ฉันสามารถใช้ Style ทั่วไปที่กำหนดไว้ก่อนหน้านี้สำหรับ GroupBoxes ต่อไปได้   -  person savetruman    schedule 14.01.2015


คำตอบ (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>
person Ayyappan Subramanian    schedule 14.01.2015