我正在尝试为每个控件使用此自定义模板代码,并且网格中的第二个按钮的内容如何。这是我的代码段。
'<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.Resources>
<!-- First Template -->
<ControlTemplate x:Key="TBtnOpen" TargetType="{x:Type Button}">
<Border x:Name="Border" CornerRadius="4">
<Border.Background><!-- Default Diagonal Gradient-->
<LinearGradientBrush>
<GradientStop Color="DarkGreen" Offset="0"/>
<GradientStop Color="LightGreen" Offset="0.5"/>
<GradientStop Color="DarkBlue" Offset="1"/>
</LinearGradientBrush>
</Border.Background>
<ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center" />
</Border>
</ControlTemplate>
<!-- Second Template -->
<ControlTemplate x:Key="TBtnCloseHor" TargetType="{x:Type Button}">
<Border x:Name="Border" CornerRadius="8">
<Border.Background>
<LinearGradientBrush StartPoint="0,0.5" EndPoint="1,0.5"> <!-- Horizontal Gradient-->
<GradientStop Color="Violet" Offset="0"></GradientStop>
<GradientStop Color="LightBlue" Offset="0.2"></GradientStop>
<GradientStop Color="DarkGreen" Offset="0.4"></GradientStop>
<GradientStop Color="Red" Offset="0.6"></GradientStop>
<GradientStop Color="Yellow" Offset="0.8"></GradientStop>
<GradientStop Color="DarkOrange" Offset="1"></GradientStop>
</LinearGradientBrush>
</Border.Background>
</Border>
</ControlTemplate>
<!-- Controls Styles -->
<Style x:Key="BtnStyles" TargetType="Button">
<Setter Property="Height" Value="40"></Setter>
<Setter Property="Width" Value="100"></Setter>
<Setter Property="FontSize" Value="25"></Setter>
<Setter Property="FontStyle" Value="Italic"></Setter>
<Setter Property="FontFamily" Value="Arial"></Setter>
<Setter Property="FontWeight" Value="Bold"></Setter>
</Style>
</Grid.Resources>
<Button Grid.Column="0" x:Name="btnFirst" HorizontalAlignment="Left"
Style="{StaticResource BtnStyles}"
Template="{StaticResource TBtnOpen}">Open!
<Button.Margin>10</Button.Margin>
<Button.Foreground>Black</Button.Foreground>
</Button>
<Button Grid.Column="1" x:Name="btnSecond" HorizontalAlignment="Right"
Style="{StaticResource BtnStyles}" Template="{StaticResource TBtnCloseHor}">Close!<!-- This is the missing Content-->
<Button.Margin>10</Button.Margin>
<Button.Foreground>White</Button.Foreground>
</Button> </Grid>'
如果将相同的模板(TBtnOpen)应用于两个按钮控件,则它可以正常工作,但每个模板都应用不同的模板,则会隐藏第二个按钮的内容。 任何建议将不胜感激。 谢谢 托尼。
PS:链接波纹管处的示例图像。 enter image description here
答案 0 :(得分:0)
我不知道是什么原因引起的,但是我知道如何解决它。您应该绑定边框的内容。
在您的边界内写上
<ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center" Content="{Binding Content, RelativeSource={RelativeSource TemplatedParent}, Mode=TwoWay}"/>
答案 1 :(得分:0)
使用自定义模板时,必须指定<ContentPresenter/>
,否则WPF将无法理解内容应该去的地方。因此,尝试将其添加到自定义模板中,即使您未指定VerticalAlignment
和HorizontalAlignment
<ControlTemplate x:Key="TBtnCloseHor" TargetType="{x:Type Button}">
<Border x:Name="Border" CornerRadius="8">
<ContentPresenter/>
<Border.Background>
<LinearGradientBrush StartPoint="0,0.5" EndPoint="1,0.5">
<!-- Horizontal Gradient-->
<GradientStop Color="Violet" Offset="0"></GradientStop>
<GradientStop Color="LightBlue" Offset="0.2"></GradientStop>
<GradientStop Color="DarkGreen" Offset="0.4"></GradientStop>
<GradientStop Color="Red" Offset="0.6"></GradientStop>
<GradientStop Color="Yellow" Offset="0.8"></GradientStop>
<GradientStop Color="DarkOrange" Offset="1"></GradientStop>
</LinearGradientBrush>
</Border.Background>
</Border>
</ControlTemplate>