我在WPF中玩耍,后面有代码,我想知道如何通过创建一个新类来创建可回收的自定义组件。我之前已经在ReactJS中做到了这一点,但我不知道如何在c#中使其工作。
这是我的简化代码,只是为了了解事物的工作原理
public class CustomButtonInStackPanel
{
public StackPanel StackPanel = new StackPanel();
public CustomButtonInStackPanel(int width, int height)
{
Button btn = new Button
{
Width = width,
Height = height,
Content = "hello world!!"
};
StackPanel.Children.Add(btn);
}
}
然后在主窗口中
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.Content = new CustomButtonInStackPanel(200, 100);
}
}
问题是我得到的只是类名,而不是堆栈面板内部的实际按钮。
答案 0 :(得分:-2)
好吧,对于任何有兴趣的人,我都能按照我的想象进行。它有一些清理工作要做,但是概念在那里。
public MainWindow()
{
InitializeComponent();
StackPanelOfButtons stackPanelOfButtons = new StackPanelOfButtons(
new List<myButton>{
new myButton(50, 100, "It Worked!"),
new myButton(100, 150, "We have more buttons"),
new myButton(150, 200, "And a third button")});
this.Content = stackPanelOfButtons.stackPanel;
}
然后点击按钮
public class myButton : UIElement
{
public Button btn = new Button();
public myButton(int width, int height, string content)
{
btn.Width = width;
btn.Height = height;
btn.Content = content;
}
}
这里的问题之一是没有实现UIElement。 现在是StackPanel,
public class StackPanelOfButtons : UIElement
{
public StackPanel stackPanel = new StackPanel();
public StackPanelOfButtons(List<myButton> buttons)
{
buttons.ForEach(b => stackPanel.Children.Add(b.btn));
}
}
这是一个不错的小实验,因为我对c#还是很陌生,并且没有太多的编程经验。