【发布时间】:2012-01-06 14:01:00
【问题描述】:
我想创建一个屏幕如下图所示的应用程序。
|-----------------------------------------|
| 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);
}
}
【问题讨论】:
-
你考虑过将按钮和画布包装成一个复合控件吗?
-
如果您不想要太多控件,并且想要同步所有 4 个画布,那么您可以使用成像 (
VisualBrush) 在 2、3、4 中显示 1 个主画布的相同副本。
标签: .net wpf wpf-controls drawing