2011-12-14 7 views
3

XAMLとコードビハインドが互いにどのように話すのかを理解しようとしています。XAMLを使用してコントロールを追加するが、コードビハインドを使用してインスタンス化する

はXAMLでボタンをインスタンス化:ボタンの

<SomeControlParent controlParent> 
<Button Name=button1/> 
<SomeControlParent controlParent> 

変更プロパティをコードビハインドで:

button1.Content = "I created this button in XAML" 
私はコードビハインド例えばName属性を使用してXAMLでインスタンス化要素にアクセスすることができます知っています

XAMLなどを使用して反対を行うことが可能であった場合、私は思っていた:

は、コードビハインドでボタンのインスタンスを作成:

Button button1 = new Button(); 
controlParent.Child.Add(button1); 

を入力し、XAMLを使用してボタンのコンテンツを変更します。

ありがとうございます! Soumaya

+0

+1初心者は時々最も興味深いを尋ねます質問。それは基本的なもののように聞こえますが、答えは当初考えていたよりも複雑です。しかし、それはXAMLのためです。学ぶべき新しい概念がたくさんあります。 – HappyNomad

答えて

3

コードビハインドを使用すると、XAMLでx:Nameが定義されている要素を参照できます。あなたはおそらくしたいと思いますが(だからあなたの例では、あなたのユーザーコントロールのプロパティを持つことができ

{Binding MyProperty, RelativeSource={RelativeSource Self}} 

を:他の方向に行く、あなたはあなたのユーザーコントロールのプロパティを定義し、バインディングRelativeSourceを使用してXAMLでそれらを参照することができますあなたが変更通知を持っているので、依存関係プロパティ)であることを:

public Button Button1 { get; private set; } 

そして使用して、XAMLに挿入:

<ContentControl Content={Binding Button1, RelativeSource={RelativeSource Self}}> 
    <ContentControl.Resources> 
     <Style TargetType="Button"> 
      <Setter Property="Content" Value="Hey, I changed the name in XAML!"/> 
     </Style> 
    </ContentControl.Resources> 
</ContentControl> 
+0

ありがとうHappyNomad – SuMau

+0

私はこれを正しい方法でやっているのか分かりません。私はpublic Button Button1 {getを追加しました。プライベートセット; }を定義している部分クラス内の SuMau

+0

Button1を前述のように依存プロパティにする。作成する最も簡単な方法は、propdpと入力し、次にTabキーを2回押します。 – HappyNomad

関連する問題