【问题标题】: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;

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

【问题讨论】:

    标签: c# wpf button uielement


    【解决方案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))
        };
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-20
      • 2022-01-14
      • 2019-04-18
      • 2019-10-09
      • 1970-01-01
      • 1970-01-01
      • 2017-11-04
      • 2012-11-09
      相关资源
      最近更新 更多