我需要为我的网格创建许多ControlTemplates。在编写了controltemplate之后,我需要在另一个网格中使用它,并且有一些条件,例如行数等。在我的情况下,当我调用我的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>
答案 0 :(得分:0)
除了Grid.Column属性值之外,内容控件BarsVerticalRight和BarsVerticalLeft被正确呈现。由于未使用
指定Grid.Column,因此可能<ContentControl Template="{StaticResource BarsVerticalLeft}"/>
默认为0!并且考虑到这将优先于样式属性集,您不能在模板中设置它