用户控件的实例是否可以公开?

时间:2015-04-01 22:27:31

标签: c# wpf xaml user-controls instance

我希望这看起来不是一个奇怪的问题或应该避免的事情,但是可以公开控件的实例以便它可以在其他类中使用吗?

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

建立

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

可以通过简单地调用ControlName.UseMethod();来访问相同的代码隐藏,就像我将要创建的类的任何实例一样。

现在,虽然我可以将代码隐藏中的普通类的实例声明为public然后自由使用,但是我没有选择这样做,因为它是在XAML中声明的,我可以& #39; t直接公开。

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

我在编程方面的经验很少,从书本和小项目中学习,这可以解释问题中的任何奇怪之处。希望没关系。

由于

1 个答案:

答案 0 :(得分:2)

你绝对不能只是公开控制权。 .NET中的控件是其FormPageWindow等的私有成员变量。它们由编译器生成到适当的&#34;隐藏&#34; cs文件,并在此时设置为私有。您可以公开它们,并使用返回它们的属性:

public MyControl MyControlProperty { get { return myControlName; } }

现在,您应该从不这样做。其他类不应该知道视图类的内部,它们应该调用方法,更改数据等,以导致更改这些内部。

另外,由于这是WPF,你甚至不应该 ,而应该使用可以在其他视图模型上调用方法的视图模型(通常通过模型)他们的相关观点反应和更新。

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