WPF - Использование шаблона управления только на одном элементе - PullRequest
0 голосов
/ 04 декабря 2018

Мои первые шаги в WPF и C #, и я не могу заставить его работать ...: (

У меня есть приложение с двумя сетками внутри одного окна. Мне нужно изменить стиль первогосетка, поэтому я начал читать и достиг с помощью ControlTemplate. Моя сетка теперь выглядит так, как я хотел. Но я только хочу, чтобы первая сетка выглядела так. Вторая на той же странице должна иметь другой стиль.

Можно ли привязать шаблон элемента управления только к одной сетке. Может быть, по имени или идентификатору чего-либо?

Мой код ControlTemplate на данный момент я написал в окне window.resources:

<Style TargetType="{x:Type TabItem}">
    <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type TabItem}">
                    <Grid>
                        <Border 
                            Name="Border"
                            Margin="0,0,0,0" 
                            Background="Black"
                            BorderBrush="Black" 
                            BorderThickness="0,2,0,0" 
                            CornerRadius="0,0,0,0" >
                            <ContentPresenter x:Name="ContentSite"
                                VerticalAlignment="Center"
                                HorizontalAlignment="Center"
                                ContentSource="Header"
                                Margin="0,0,0,20"
                                RecognizesAccessKey="True"/>
                        </Border>
                    </Grid>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter TargetName="Border" Property="BorderBrush" Value="#FF454E54" />
                            <Setter TargetName="Border" Property="Background"   Value="#FF0A3651" />
                        </Trigger>
                        <Trigger Property="IsSelected" Value="True">
                            <Setter TargetName="Border" Property="BorderBrush" Value="White" />
                            <Setter TargetName="Border" Property="Background" Value="#FF454E54" />
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
</Style>

Ответы [ 3 ]

0 голосов
/ 04 декабря 2018

Вы можете присвоить Style или ControlTemplate x:Key (<Style x:Key="key" TargetType="{x:Type TabItem}">) и применить его к нужному элементу, установив свойство элемента Style или Template следующим образом:

<TabItem Style="{StaticResource key}">

A Style без x:Key неявно и будет применяться ко всем элементам, тип которых соответствует указанному TargetType из Style.

0 голосов
/ 05 декабря 2018

Попробуйте это.Все, что это делает, это непосредственно устанавливает стиль TabItem.

<TabItem> <!-- This is your TabItem control -->
    <TabItem.Style>
        <Style TargetType="{x:Type TabItem}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate>
                        <!-- ControlTemplate here -->
                    </Controltemplate
                </Setter.Value>
            </Setter>
        </Style>
    </TabItem.Style>
</TabItem>
0 голосов
/ 04 декабря 2018

Вместо написания вашего шаблона в Window.Resources сделайте это в Grid.Resources

...