自定义按钮无法正确呈现
Custom button not rendering correctly
我有一个带有圆形图像的自定义按钮 class,因为我将在我的程序中多次使用它。我认为创建 class、继承 Button 并将我的设置放入构造函数中会非常简单,但是当我 运行 程序时,按钮又大又普通(没有图像或文本).这是我的 class:
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);
}
with btn_Return
在 class 的顶部被简单地定义为
ImageButton btn_Return;
这是其中一个按钮的图片。
在您的构造函数中,您使用属性初始化一个 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))
};
}
我有一个带有圆形图像的自定义按钮 class,因为我将在我的程序中多次使用它。我认为创建 class、继承 Button 并将我的设置放入构造函数中会非常简单,但是当我 运行 程序时,按钮又大又普通(没有图像或文本).这是我的 class:
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);
}
with btn_Return
在 class 的顶部被简单地定义为
ImageButton btn_Return;
这是其中一个按钮的图片。
在您的构造函数中,您使用属性初始化一个 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))
};
}