2011-12-28 58 views
0

在代码中,我创建了一个:C#WPF公共静态控制

public static Button button1 = new Button(); 

,并把它添加到帆布,我可以访问按钮随时随地在我的代码的任何类,但我可以不知道如何在XAML中做到这一点。

基本上我想访问我的控件在任何类中,我可以做到这一点,如果我在代码中创建它们,但不是在XAML

有没有解决方案?

+0

为什么您需要从任何地方访问您的控件....并在WPF中? – Tigran 2011-12-28 21:41:29

+0

不要使用公共静态控件属性。 – Bas 2011-12-28 21:46:22

+0

组织,所以我不必将Button(和许多其他控件)作为外部类中的方法的参数。 – marseilles84 2011-12-28 22:00:39

回答

0

您只需在XAML中为控件指定一个x:name并在后面的代码中通过该名称访问它。如果你想从ANY类访问它们,那么我不确定你可以在XAML中做到这一点,因为XAML更多地只与一个代码相关联。如果您需要其他类来访问该控件,那么您需要将其作为背后代码中的一个属性公开。但为什么你需要从另一个类访问UI控件?

+0

我只是有大量的代码,并且我想把它全部组织在不同的类中,这实际上就是它的缺点。 – marseilles84 2011-12-28 21:48:44

+0

或单独的文件。 – marseilles84 2011-12-28 21:48:59

+0

我有类似的情况,我想要的是有一个全局控制用于输出我的应用程序的状态或异常。 – zionpi 2014-04-24 06:48:13

1

下面的类:

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}" /> 

但是,我强烈建议你不要使用此方法,找到另一种方式来做到无论你想要做什么。

+0

阿门的警告,也许你可以找到一种方式*不*拼写公共静态字段与小写b?我知道,你不想使用班级名字......仍然... – Adam 2011-12-28 21:47:49

+0

@codesparkle:男人,你指出来后,它开始窃听我,以及...我不得不改变它... – decyclone 2011-12-28 22:23:23