wpf Button控件改FontSize大小无效

  1. 可以设置模板

 <Style TargetType="Button" x:Key="btn" BasedOn="{StaticResource uiEffect}">
    <Setter Property="Background" Value="{StaticResource MainColor}"></Setter>
    <Setter Property="Width" Value="120"></Setter>
    <Setter Property="Height" Value="36"></Setter>
    <Setter Property="FontSize" Value="16"></Setter>
    <Setter Property="Foreground" Value="White"></Setter>
    <Setter Property="Margin" Value="10"></Setter>
    <Setter Property="VerticalContentAlignment" Value="Center"></Setter>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="Button">
                <Border x:Name="border" CornerRadius="8" Background="{TemplateBinding Background}">
                    <TextBlock Text="{TemplateBinding Content}" HorizontalAlignment="Center" FontFamily="微软雅黑" Foreground="{TemplateBinding Foreground}" VerticalAlignment="Center" Margin="20 0"></TextBlock>
                </Border>
                <ControlTemplate.Triggers>
                    <Trigger Property="IsMouseOver" Value="True">
                        <Setter TargetName="border" Property="Opacity" Value="0.6"></Setter>
                    </Trigger>
                    <Trigger Property="IsPressed" Value="True">
                        <Setter TargetName="border" Property="Opacity" Value="0.6"></Setter>
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
  1. 中间再加个控件,给该空间设置FontSize

<Button Grid.Row="0" Grid.Column="0" Click="Button_Click">
    <TextBlock>17</TextBlock>
</Button>

还可以继续研究一下

微软WPF中Button的默认模板代码

https://blog.csdn.net/qq_37189288/article/details/116653828

Button--ButtonBase

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以通过以下步骤来实现在WPF中给Canvas上的文字添加点击时出现边框并可以通过鼠标拖动边框控件大小的效果: 1. 在XAML文件中,添加一个Canvas控件和一个Button控件,用于动态添加TextBlock控件: ```xaml <Canvas x:Name="canvas" Background="White" MouseUp="Canvas_MouseUp"> <!-- 这里可以添加已经存在的TextBlock控件 --> </Canvas> <Button Content="Add TextBlock" Click="Button_Click" /> ``` 2. 在Button的Click事件中,动态添加TextBlock控件,并为其添加MouseDown、MouseUp、MouseMove事件: ```csharp private void Button_Click(object sender, RoutedEventArgs e) { // 创建TextBlock控件,并为其设置一些属性 TextBlock textBlock = new TextBlock(); textBlock.Text = "Hello, world!"; textBlock.Foreground = Brushes.Black; textBlock.FontSize = 16; // 设置TextBlock控件的位置和大小 Canvas.SetLeft(textBlock, 50); Canvas.SetTop(textBlock, 50); textBlock.Width = 100; textBlock.Height = 50; // 为TextBlock控件添加MouseDown、MouseUp、MouseMove事件 textBlock.MouseDown += TextBlock_MouseDown; textBlock.MouseUp += TextBlock_MouseUp; textBlock.MouseMove += TextBlock_MouseMove; // 将TextBlock控件添加到Canvas控件中 canvas.Children.Add(textBlock); } ``` 3. 在TextBlock的MouseDown事件中,创建一个边框控件,并将其添加到Canvas上,同时将TextBlock控件的位置和大小赋值给边框控件: ```csharp private void TextBlock_MouseDown(object sender, MouseButtonEventArgs e) { // 创建边框控件 Border border = new Border(); border.BorderBrush = Brushes.Black; border.BorderThickness = new Thickness(1); border.Background = Brushes.Transparent; // 获取当前点击的TextBlock控件 TextBlock textBlock = sender as TextBlock; // 获取TextBlock控件的位置和大小,并设置给边框控件 double left = Canvas.GetLeft(textBlock); double top = Canvas.GetTop(textBlock); double width = textBlock.ActualWidth; double height = textBlock.ActualHeight; border.Width = width; border.Height = height; Canvas.SetLeft(border, left); Canvas.SetTop(border, top); // 将边框控件添加到Canvas控件中 canvas.Children.Add(border); } ``` 4. 在TextBlock的MouseUp事件中,移除边框控件: ```csharp private void TextBlock_MouseUp(object sender, MouseButtonEventArgs e) { // 获取当前点击的TextBlock控件 TextBlock textBlock = sender as TextBlock; // 移除边框控件 foreach (UIElement element in canvas.Children) { if (element is Border) { Border border = element as Border; if (border.Tag == textBlock) { canvas.Children.Remove(border); break; } } } } ``` 5. 在TextBlock的MouseMove事件中,更新边框控件的位置和大小: ```csharp private void TextBlock_MouseMove(object sender, MouseEventArgs e) { // 获取当前点击的TextBlock控件 TextBlock textBlock = sender as TextBlock; // 查找对应的边框控件 Border border = null; foreach (UIElement element in canvas.Children) { if (element is Border) { Border temp = element as Border; if (temp.Tag == textBlock) { border = temp; break; } } } // 如果找到了对应的边框控件,则更新其位置和大小 if (border != null) { double left = Canvas.GetLeft(textBlock); double top = Canvas.GetTop(textBlock); double width = textBlock.ActualWidth; double height = textBlock.ActualHeight; border.Width = width; border.Height = height; Canvas.SetLeft(border, left); Canvas.SetTop(border, top); } } ``` 这样,当用户点击TextBlock控件时,就会在其周围创建一个边框控件,可以通过鼠标拖动边框变TextBlock控件的位置和大小。同时,当用户松开鼠标时,边框控件会被移除。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值