报了无法通过"UlElement'类型的限定符访问受保护的成员”object.MemberwiseClone0";限定符必须是" MainWindow "类型(或者从该类型派生)错误
时间: 2023-12-31 17:05:23 浏览: 33
这个错误是因为 `MemberwiseClone()` 方法是受保护的,只能从同一类或其派生类中访问。在您的代码中,您可能试图从 `UIElement` 类或其派生类中调用 `MemberwiseClone()` 方法,这是不允许的。
为了解决这个问题,您可以将控件类型转换为其实际类型,然后再调用 `MemberwiseClone()` 方法。例如,如果您要从一个 `Button` 控件中复制属性,您可以执行以下操作:
```csharp
Button staticButton = new Button();
staticButton.Background = Brushes.Red;
staticButton.Foreground = Brushes.White;
Button newButton = (Button)staticButton.MemberwiseClone();
```
在上面的示例中,我们首先创建了一个新的 `Button` 控件 `staticButton` 并设置其背景和前景颜色。然后,我们将 `staticButton` 类型转换为 `Button` 类型,并使用 `MemberwiseClone()` 方法创建一个新的 `Button` 控件 `newButton`。现在,`newButton` 具有与 `staticButton` 相同的属性,但是它们具有不同的引用。
请注意,使用 `MemberwiseClone()` 方法进行复制只会复制控件的值类型属性,对于引用类型属性(例如 `Brush`、`Font` 等),它们仍然会共享相同的引用。