0

フォームでスタイルとコードを結合するのに問題があります:

これが私の状況です:

私のTabItemスタイル:

   <Style TargetType="TabItem" x:Key="testStyle">
        <Setter Property="FocusVisualStyle" Value="{x:Null}" />
        <Setter Property="IsTabStop" Value="False" />
        <Setter Property="BorderThickness" Value="1" />
        <Setter Property="Padding" Value="6,2,6,2" />
        <Setter Property="HorizontalContentAlignment" Value="Stretch" />
        <Setter Property="VerticalContentAlignment" Value="Stretch" />
        <Setter Property="MinWidth" Value="5" />
        <Setter Property="MinHeight" Value="5" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="TabItem">
                    <DockPanel Width="120" x:Name="rootPanel">
                        <ContentPresenter ContentSource="Header"  RecognizesAccessKey="True" />
                        <Image x:Name="rootImage"/>
                        <Label x:Name="rootLabel" FontSize="18" />
                    </DockPanel>
                    <ControlTemplate.Triggers>

そしてここに私のスタイルを適用します

            <TabItem Style="{StaticResource testStyle}">
                <TabItem.Header>

                </TabItem.Header>

rootImageしかし:どうすれば画像とラベルに値を設定できますrootLabelか?

4

2 に答える 2

1

あなたがあなたのためにしたのと同じように、あなたはあなたのTabItemために指定されたスタイルを持つことができます-ImageLabel

<Image x:Name="rootImage" Style="{StaticResource ImageStyle}"/>
<Label x:Name="rootLabel" FontSize="18" Style="{StaticResource LabelStyle}" />

外観を変更したい場合は、全体ではなくHeaderオーバーライドする必要があります-HeaderTemplateTemplate

        <TabItem.HeaderTemplate>
            <DataTemplate>
                <StackPanel>
                    <Image x:Name="rootImage"
                           Style="{StaticResource ImageStyle}"/>
                    <Label x:Name="rootLabel" FontSize="18"
                           Style="{StaticResource LabelStyle}"/>
                </StackPanel>
            </DataTemplate>
        </TabItem.HeaderTemplate>
于 2013-03-27T09:55:32.010 に答える
1

私はあなたがという名前のクラスを持っていると思いますSomeClass

public class SomeClass
{
    public string SomeLabel;
    public string SomeImage;
}

今あなたのスタイルを変更します

<DockPanel Width="120" x:Name="rootPanel">
    <ContentPresenter ContentSource="Header"  RecognizesAccessKey="True" />
    <Image x:Name="rootImage" Source={Binding SomeImage}/>
    <Label x:Name="rootLabel" Content={Binding SomeLabel} FontSize="18" />
</DockPanel>

ついに:

<TabItem Style="{StaticResource testStyle}" Name="myTabItem">
    <TabItem.Header>

    </TabItem.Header>
</TabItem>

そして、背後にあるコードでは:

myTabItem.DataContext = new SomeClass(); //create a SomeClass with proper label and image
于 2013-03-27T10:06:56.923 に答える