用户控件的实例可以是 public 吗?

Can an instance of a User Control be public?

我希望这看起来不是一个奇怪的问题或应该避免的问题,但是是否可以制作控件的实例 public 以便它可以在其他 类?

例如,在XAML中,用户控件是由

建立的

<local:MyControl x:Name="ControlName" />

只需调用 ControlName.UseMethod(); 即可在相同的代码隐藏中访问它,就像我创建的任何 类 实例一样。

现在,虽然我可以在代码隐藏中将正常 类 的实例声明为 public 然后自由使用它,但我在这里没有这样做的选项在 XAML 中声明,我无法直接将其设为 public。

我需要能够在程序的其他部分访问用户控件的内容,并且无法使用我需要的静态方法。

我的编程经验很少,都是从书本上学习,通过小项目学习,这可能解释了问题中的任何奇怪之处。希望没事。

谢谢

你绝对不能直接控制public。 .NET 中的控件是它们的 FormPageWindow 等的私有成员变量。它们由编译器生成到适当的 "hidden" cs 文件中,并被设置到那时私人。你 可以 公开它们,属性 returns 它们:

public MyControl MyControlProperty { get { return myControlName; } }

现在,您真的应该永远这样做。其他 类 不应该知道您的视图 类 的内部结构,他们应该调用方法、更改数据等 导致 那些内部结构发生变化。

此外,由于这是 WPF,您甚至不应该那个,而是您应该使用可以调用其他视图模型上的方法的视图模型(通常通过模型) 以使其关联的视图做出反应和更新。

简而言之,是的,您可以向世界公开控件,但如果您必须这样做,您几乎可以肯定这样做是完全错误的。