在代碼中,我創建了一個: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