在代码中,我创建了一个:C#WPF公共静态控制
public static Button button1 = new Button();
,并把它添加到帆布,我可以访问按钮随时随地在我的代码的任何类,但我可以不知道如何在XAML中做到这一点。
基本上我想访问我的控件在任何类中,我可以做到这一点,如果我在代码中创建它们,但不是在XAML。
有没有解决方案?
在代码中,我创建了一个:C#WPF公共静态控制
public static Button button1 = new Button();
,并把它添加到帆布,我可以访问按钮随时随地在我的代码的任何类,但我可以不知道如何在XAML中做到这一点。
基本上我想访问我的控件在任何类中,我可以做到这一点,如果我在代码中创建它们,但不是在XAML。
有没有解决方案?
您只需在XAML中为控件指定一个x:name并在后面的代码中通过该名称访问它。如果你想从ANY类访问它们,那么我不确定你可以在XAML中做到这一点,因为XAML更多地只与一个代码相关联。如果您需要其他类来访问该控件,那么您需要将其作为背后代码中的一个属性公开。但为什么你需要从另一个类访问UI控件?
我只是有大量的代码,并且我想把它全部组织在不同的类中,这实际上就是它的缺点。 – marseilles84 2011-12-28 21:48:44
或单独的文件。 – marseilles84 2011-12-28 21:48:59
我有类似的情况,我想要的是有一个全局控制用于输出我的应用程序的状态或异常。 – zionpi 2014-04-24 06:48:13
下面的类:
public class TestClass
{
public static System.Windows.Controls.Button GlobalButton {get; set;}
static TestClass()
{
GlobalButton = new System.Windows.Controls.Button();
GlobalButton.Content = "Button1";
}
}
您可以使用下面XAML:
<Border Child="{x:Static MemberType=local:TestClass, Member=GlobalButton}" />
但是,我强烈建议你不要使用此方法,找到另一种方式来做到无论你想要做什么。
如果您需要引用从任何地方在XAML中声明的对象,则可能wan't看看这个接口:http://msdn.microsoft.com/en-us/library/system.xaml.ixamlnameresolver.aspx
有了这个,你应该能够解决通过X给定的XAML名称范围的任何对象:名称
为什么您需要从任何地方访问您的控件....并在WPF中? – Tigran 2011-12-28 21:41:29
不要使用公共静态控件属性。 – Bas 2011-12-28 21:46:22
组织,所以我不必将Button(和许多其他控件)作为外部类中的方法的参数。 – marseilles84 2011-12-28 22:00:39