2011-12-28 6 views
0

、私が作成します。C#のコードで

public static Button button1 = new Button(); 

キャンバスに追加して、私は自分のコードに任意のクラスでボタンどこでもアクセスすることができますが、私はできますXAMLでこれを行う方法を理解していない。

基本的にはどのクラスのコントロールにもアクセスしたいのですが、コードで作成するとできますが、XAMLでは作成できません。

解決策はありますか?

+0

? – Tigran

+0

パブリック静的コントロールプロパティを使用しないでください。 – Bas

+0

組織なので、Button(および他の多くのコントロール)を外部クラスのメソッドのパラメータとして渡す必要はありません。 – marseilles84

答えて

0

あなただけのコントロールにXを与えることがあります:背後にあるコードでその名前のXAMLでの名前とアクセスを。 ANYクラスからそれらにアクセスしたい場合は、XAMLが単なるコードの後ろに関連付けられているだけであるため、XAMLでこれを実行できるかどうかはわかりません。コントロールにアクセスするために他のクラスが必要な場合は、そのコードをコードのプロパティとして公開する必要があります。しかし、なぜ別のクラスのUIコントロールにアクセスする必要がありますか?

次のクラスでは
+0

私はちょうど膨大な量のコードを持っており、私はそれをすべて別々のクラスで編成しておきたいと思います。 – marseilles84

+0

または実際に別のファイル。 – marseilles84

+0

私はこれに似た状況があります。私が望むのは、アプリケーションの状態や例外を出力するために使われたグローバルコントロールを持つことです。 – zionpi

1

:私は非常には、このメソッドを使用して行うための別の方法を見つけていないお勧めします

<Border Child="{x:Static MemberType=local:TestClass, Member=GlobalButton}" /> 

しかし、XAML次を使用でき

public class TestClass 
{ 
    public static System.Windows.Controls.Button GlobalButton {get; set;} 

    static TestClass() 
    { 
     GlobalButton = new System.Windows.Controls.Button(); 
     GlobalButton.Content = "Button1"; 
    } 
} 

あなたがしようとしていることは何でも。

+0

amen警告には、多分あなたは小文字のbでpublic staticフィールドのスペルをしていない*の方法を見つけることができますか?私は知っている、あなたはクラス名を使用したくない...まだ... – Adam

+0

@codeparkle:男は、あなたがそれを指摘した後、それも私を悩ませ始めた...私はそれを変更しなければならなかった... – decyclone

0

あなたはどこからでもXAMLで宣言されたオブジェクトを参照する必要がある場合は、このインターフェイスをチェックアウトするwan't場合があります。これによりhttp://msdn.microsoft.com/en-us/library/system.xaml.ixamlnameresolver.aspx

あなたがxで与えられたのXAML名前スコープ内の任意のオブジェクトを解決することができるはずです:名前

あなたはどこからでもアクセス制御を必要とする....とWPFでなぜ