我想用如下所示的屏幕创建一个应用程序。
|-----------------------------------------|
| MainWindow [-][=][x]|
|-----------------------------------------|
| | |
| (Button1) | (Button1) |
| | |
| 1| 2|
|-----------------------------------------|
| | |
| (Button1) | (Button1) |
| | |
| 3| 4|
|-----------------------------------------|
Legend: It a window form has four canvas (are 1,2,3,4) added to grid.
以下是我的代码。我使用.Net 3.0,但窗口无法正确显示。 Button1仅在canvas1上显示。 请帮我解决此问题。
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.Loaded += new RoutedEventHandler(MainWindow_Loaded);
}
void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
Button bt1 = new Button()
{ Content = "Button1", Width = 100, Height = 50 };
// Add button1 to four DrawingCanvas.
canvas1.Add(bt1);
canvas2.Add(bt1);
canvas3.Add(bt1);
canvas4.Add(bt1);
}
}
public class DrawIngCanvas : Canvas
{
public void Add(UIElement data)
{
DrawIngCanvas cv = LogicalTreeHelper.GetParent(data) as DrawIngCanvas;
if (cv != null)
{
cv.RemoveLogicalChild(data);
cv.RemoveVisualChild(data);
}
base.Children.Add(data);
}
}
答案 0 :(得分:2)
每个Visual
可能只有一个VisualParent
。因此,该按钮无法添加到多个画布。每个画布都需要一个单独的Button
实例。
如果您希望每个按钮的行为相同,请考虑使用Style
。
答案 1 :(得分:1)
您无法在四个不同的地方显示一个按钮,需要四个按钮。
像这样:canvas1.Add(new Button{ Content = "Button1", Width = 100, Height = 50 });
canvas2.Add(new Button{ Content = "Button1", Width = 100, Height = 50 });
canvas3.Add(new Button{ Content = "Button1", Width = 100, Height = 50 });
canvas4.Add(new Button{ Content = "Button1", Width = 100, Height = 50 });
答案 2 :(得分:0)
您不能拥有一个控件的多个父级,因此尝试将bt1
添加到canvas1
,canvas2
,canvas3
和 {{1永远不会起作用。
相反,如果要模拟四个canvas4
控件中的相同按钮,则需要创建具有相同属性值的四个Canvas
对象(例如Button
和{{ 1}}),然后分别将它们添加到Content
控件。
答案 3 :(得分:0)
您可以使用Clone()函数进行精确复制