自定义按钮未正确呈现

Posted

技术标签:

【中文标题】自定义按钮未正确呈现【英文标题】:Custom button not rendering correctly 【发布时间】:2020-05-29 02:02:32 【问题描述】:

我有一个带有圆形图像的按钮的自定义类,因为我将在我的程序中多次使用它。我认为创建类、从 Button 继承并将我的设置添加到构造函数中非常简单,但是当我运行程序时,按钮又大又简单(没有图像或文本)。这是我的课:

public class ImageButton : Button

    public Button Button;

    public ImageButton(string filename) : this(HorizontalAlignment.Center, VerticalAlignment.Center, filename)
     

    public ImageButton(HorizontalAlignment hAlignment, VerticalAlignment vAlignment, string filename)
    
        Button = new Button
        
            Width = 35,
            Height = 35,
            Background = Brushes.Transparent,
            HorizontalAlignment = hAlignment,
            BorderBrush = Brushes.Transparent,
            VerticalAlignment = vAlignment,
            Content = new Image
            
                Source = new BitmapImage(new Uri("pack://application:,,,/Resources/" + filename))
            
        ;
    


这是我对其中一个实例的实现

private void SetupHeaders(Grid resultGrid)

    RowDefinition backbtn = new RowDefinition();
    backbtn.Height = new GridLength(0.2, GridUnitType.Star);
    resultGrid.RowDefinitions.Add(backbtn);
    btn_Return = new ImageButton(HorizontalAlignment.Left, VerticalAlignment.Top, "returnicon.png");
    Grid.SetRow(btn_Return, 0);
    Grid.SetColumn(btn_Return, 0);
    resultGrid.Children.Add(btn_Return);


btn_Return 被简单地定义在类的顶部

ImageButton btn_Return;

这是其中一个按钮的图像。

【问题讨论】:

【参考方案1】:

在您的构造函数中,您使用属性初始化一个 Button,然后将其分配给一个属性。你从来没有真正使用过初始化按钮。您总是使用 ImageButton,它只不过是一个继承的按钮,因此您会获得默认行为。

你必须改变你的构造函数。

public ImageButton(HorizontalAlignment hAlignment, VerticalAlignment vAlignment, string filename)

    Width = 35;
    Height = 35;
    Background = Brushes.Transparent;
    HorizontalAlignment = hAlignment;
    BorderBrush = Brushes.Transparent;
    VerticalAlignment = vAlignment;
    Content = new Image
    
        Source = new BitmapImage(new Uri("pack://application:,,,/Resources/" + filename))
    ;

【讨论】:

以上是关于自定义按钮未正确呈现的主要内容,如果未能解决你的问题,请参考以下文章

自定义按钮在界面生成器中未正确显示

UINavigationController 的自定义动画推送未正确呈现导航栏

Swift:在自定义视图中未调用 UIButton 触摸事件

Swift - 如何在自定义 AlertController 中点击按钮时呈现 ViewController

单击自定义 TableViewCell Swift 4 中的按钮时如何呈现单独的视图控制器?

从自定义 UICollectionViewCell 获取正确的按钮