Как я могу использовать ControlTemplate для многих сеток? - PullRequest
0 голосов
/ 08 июня 2018

Мне нужно создать много ControlTemplates для моих сеток.После написания шаблона элемента управления мне нужно использовать его в другой сетке с некоторыми условиями, такими как номер строки и т. Д. В моем случае, когда я вызываю свой GridTitle <ContentControl Template="{StaticResource GridTitle}"/>, он работает хорошо, но когда я вызываю BarsVerticalRight, <ContentControl Template="{StaticResource BarsVerticalRight}"/> не работает.

Это мой код:

<Window.Resources> 
    <Style x:Key="GridColored" TargetType="Grid">
        <Setter Property="Background" Value="#FF4E5E72"/>
    </Style>

    <LinearGradientBrush x:Key="BackgroundColor" EndPoint="0.5,1.272" StartPoint="0.5,0">
        <GradientStop Color="#FF4E5E72" Offset="1"/>
    </LinearGradientBrush>

    <ControlTemplate x:Key="GridTitle">
        <Grid Grid.Row="0" Style="{StaticResource GridColored}" Grid.IsSharedSizeScope="True">
            <Grid.ColumnDefinitions>
                <ColumnDefinition  Width="60*" SharedSizeGroup="A"/>
                <ColumnDefinition Width="12*" />
                <ColumnDefinition Width="90*" />
                <ColumnDefinition Width="248*" />
                <ColumnDefinition Width="30*" />
            </Grid.ColumnDefinitions>

            <Grid  Grid.Column="0">
                <Image Source="pack://application:,,,/Gate;component/Images/Logo_BlancFondGris.jpg" Stretch="UniformToFill"/>
            </Grid>

            <Viewbox Grid.Column="2" Stretch="Uniform">
                <Grid>
                    <Image Source="pack://application:,,,/Gate;component/Images/Titre.jpg" Stretch="UniformToFill"/>
                </Grid>
            </Viewbox>

            <Grid Grid.Column="3">
                <Grid.RowDefinitions>
                    <RowDefinition/>
                    <RowDefinition/>
                </Grid.RowDefinitions>

                <Viewbox Grid.Row="0" HorizontalAlignment="Right">
                    <TextBlock TextWrapping="Wrap" Foreground="White" FontWeight="Bold" FontStyle="Italic" Text="{Binding CentreName, Mode=OneWay}"  />
                </Viewbox>

                <Grid Grid.Row="1">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="130*"/>
                        <ColumnDefinition Width="25*"/>
                    </Grid.ColumnDefinitions>

                    <Viewbox Grid.Column="1">
                        <TextBlock TextWrapping="Wrap" Language="fr-FR" Text="{Binding DateTimeLocal, Mode=OneWay,StringFormat='{}{0: dd/MM/yyyy  hh:mm}'}" Foreground="White" HorizontalAlignment="Stretch" >

                        </TextBlock>
                    </Viewbox>    
                </Grid>    
            </Grid>    
        </Grid>
    </ControlTemplate>

    <ControlTemplate x:Key="BarsVerticalLeft">
        <Grid Grid.Column="0" Style="{StaticResource GridColored}" Margin="0,-9,0,0"/>
    </ControlTemplate>

    <ControlTemplate x:Key="BarsVerticalRight">
        <Grid Grid.Column="2" Style="{StaticResource GridColored}" Margin="0,0,0,-10"/>
    </ControlTemplate>
</Window.Resources>

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="80*" />
        <RowDefinition Height="615*" />
        <RowDefinition Height="15*" />
    </Grid.RowDefinitions>
    <ContentControl Template="{StaticResource GridTitle}"/>
    <Grid Margin="0,42,0,10" Grid.RowSpan="3">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="20*"/>
            <ColumnDefinition Width="1950*"/>
            <ColumnDefinition Width="20*"/>
        </Grid.ColumnDefinitions>

        <ContentControl Template="{StaticResource BarsVerticalLeft}"/>
        <ContentControl Template="{StaticResource BarsVerticalRight}"/>           
    </Grid>
</Grid>

1 Ответ

0 голосов
/ 08 июня 2018

Элементы управления содержимым BarsVerticalRight и BarsVerticalLeft отображаются правильно, за исключением значения свойства Grid.Column.Это может быть из-за того факта, что когда Grid.Column не указан с

<ContentControl Template="{StaticResource BarsVerticalLeft}"/> 

, по умолчанию он равен 0!и учитывая, что это будет иметь приоритет над набором свойств стиля, вы не можете установить его в шаблоне

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...