2011-12-28 96 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