使用按钮模板的按钮内文本框的动态 属性
Dynamic property of a text box within a button using a button template
我有几个按钮要在 C# WPF 中设置,我喜欢使用按钮模板。
我可以设置模板,然后在我的网格中使用它,但是如何更改每个按钮的文本框文本以及矩形颜色等其他属性?
这是我的模板:
<Window.Resources>
<ControlTemplate x:Key="menuButton_Type1" TargetType="Button">
<Grid >
<Rectangle x:Name="Normal" Fill="#FFFDC776" HorizontalAlignment="Left" Height="25" Width="82" RadiusX="7" RadiusY="7"/>
<Rectangle x:Name="Pressed" Fill="White" HorizontalAlignment="Left" Height="25" Width="82" RadiusX="7" RadiusY="7" Visibility="Hidden"/>
<Rectangle x:Name="Disable" Fill="#FF707070" HorizontalAlignment="Left" Height="25" Width="82" RadiusX="7" RadiusY="7" Visibility="Hidden"/>
<Border Width="82" Height="25" Padding="0,0,5,0">
<TextBlock Text="EXIT" FontFamily="{StaticResource Swiss911}" FontSize="18" HorizontalAlignment="Right" VerticalAlignment="Bottom" />
</Border>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="Normal" Property="Visibility" Value="Hidden" />
<Setter TargetName="Pressed" Property="Visibility" Value="Visible" />
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter TargetName="Normal" Property="Visibility" Value="Hidden" />
<Setter TargetName="Disable" Property="Visibility" Value="Visible" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Window.Resources>
我在我的 XAML 网格中使用模板按钮是这样的:
<Grid>
<Button Template="{StaticResource menuButton_Type1}" Margin="18,226,-18,-226" />
</Grid>
我想更改当前设置为“退出”的 TextBlock 的文本以及其中一个矩形的颜色,在本例中为普通矩形。我该怎么做?
我尝试使用动态属性,但这对我不起作用。
我在这些页面上找到了您的答案:
- What is the template binding vs binding?
- TemplateBinding Markup Extension
您可以简单地将绑定到 TextBlock 的文本 属性 到您的 ControlTemplate 上。
您应该将按钮的 Content 属性 添加到 TextBlock 的文本 属性:
<TextBlock Text="{TemplateBinding Content}" FontFamily="{StaticResource Swiss911}" FontSize="18" HorizontalAlignment="Right" VerticalAlignment="Bottom" />
然后你可以设置Button的内容属性,Button的Content 属性将传递给你的TextBlock 的文本 属性.
<Button Template="{StaticResource menuButton_Type1}" Content="Exit" Margin="100" />
我用这些按钮测试过:
<Button Template="{StaticResource menuButton_Type1}" Content="Exit" Margin="0,0,0,0" />
<Button Template="{StaticResource menuButton_Type1}" Content="Close" Margin="100,0,0,0" />
<Button Template="{StaticResource menuButton_Type1}" Content="Open" Margin="200,0,0,0" />
我有几个按钮要在 C# WPF 中设置,我喜欢使用按钮模板。
我可以设置模板,然后在我的网格中使用它,但是如何更改每个按钮的文本框文本以及矩形颜色等其他属性?
这是我的模板:
<Window.Resources>
<ControlTemplate x:Key="menuButton_Type1" TargetType="Button">
<Grid >
<Rectangle x:Name="Normal" Fill="#FFFDC776" HorizontalAlignment="Left" Height="25" Width="82" RadiusX="7" RadiusY="7"/>
<Rectangle x:Name="Pressed" Fill="White" HorizontalAlignment="Left" Height="25" Width="82" RadiusX="7" RadiusY="7" Visibility="Hidden"/>
<Rectangle x:Name="Disable" Fill="#FF707070" HorizontalAlignment="Left" Height="25" Width="82" RadiusX="7" RadiusY="7" Visibility="Hidden"/>
<Border Width="82" Height="25" Padding="0,0,5,0">
<TextBlock Text="EXIT" FontFamily="{StaticResource Swiss911}" FontSize="18" HorizontalAlignment="Right" VerticalAlignment="Bottom" />
</Border>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="Normal" Property="Visibility" Value="Hidden" />
<Setter TargetName="Pressed" Property="Visibility" Value="Visible" />
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter TargetName="Normal" Property="Visibility" Value="Hidden" />
<Setter TargetName="Disable" Property="Visibility" Value="Visible" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Window.Resources>
我在我的 XAML 网格中使用模板按钮是这样的:
<Grid>
<Button Template="{StaticResource menuButton_Type1}" Margin="18,226,-18,-226" />
</Grid>
我想更改当前设置为“退出”的 TextBlock 的文本以及其中一个矩形的颜色,在本例中为普通矩形。我该怎么做?
我尝试使用动态属性,但这对我不起作用。
我在这些页面上找到了您的答案:
- What is the template binding vs binding?
- TemplateBinding Markup Extension
您可以简单地将绑定到 TextBlock 的文本 属性 到您的 ControlTemplate 上。
您应该将按钮的 Content 属性 添加到 TextBlock 的文本 属性:
<TextBlock Text="{TemplateBinding Content}" FontFamily="{StaticResource Swiss911}" FontSize="18" HorizontalAlignment="Right" VerticalAlignment="Bottom" />
然后你可以设置Button的内容属性,Button的Content 属性将传递给你的TextBlock 的文本 属性.
<Button Template="{StaticResource menuButton_Type1}" Content="Exit" Margin="100" />
我用这些按钮测试过:
<Button Template="{StaticResource menuButton_Type1}" Content="Exit" Margin="0,0,0,0" />
<Button Template="{StaticResource menuButton_Type1}" Content="Close" Margin="100,0,0,0" />
<Button Template="{StaticResource menuButton_Type1}" Content="Open" Margin="200,0,0,0" />