2011-07-18 6 views
0

4つのTextBlockを持つStackPanelを定義し、プロパティとして4つの文字列を保持するオブジェクトを定義します。stackpanelの子供にバインドするには?

class a 
    { 
    public string str1; 
    public string str2; 
    public string str3; 
    public string str4; 
    } 

    <StackPanel> 
    <TextBlock x:Name="txt1" /> 
    <TextBlock x:Name="txt2" /> 
    <TextBlock x:Name="txt3" /> 
    <TextBlock x:Name="txt4" /> 
    </StackPanel>    

私は私がそれをどのように行うことができます

クラスAのオブジェクトインスタンスとのStackPanel間の結合TextBlock.Text

を定義したいですか?

答えて

1

str1-4にバインドするには、少なくともプロパティを取得/設定する必要があります(ビューがクラスaのインスタンスに接続された後でプロパティが変更される場合は、プロパティに通知する必要があります)。

class a 
    { 
    public string str1 { get; set; } 
    public string str2 { get; set; } 
    public string str3 { get; set; } 
    public string str4 { get; set; } 
    } 

    <StackPanel> 
    <TextBlock x:Name="txt1" Text={Binding str1} /> 
    <TextBlock x:Name="txt2" Text={Binding str2} /> 
    <TextBlock x:Name="txt3" Text={Binding str3} /> 
    <TextBlock x:Name="txt4" Text={Binding str4} /> 
    </StackPanel> 

あなたのクラスAが存在する場合、私は知らない、またはあなたがMVVMを使用している場合(私はない推測しています)が、ビューのコンストラクタで最低ビューのDataContextのを(設定する必要がありますまたはスタックパネルだけ)を "a"のインスタンスに追加します。

public MyView() 
{ 
    InitializeComponent(); 
    this.DataContext = myaInstance; 
} 

か、のStackPanelに名前を付け、そのDataContextのセットのみ、その後のStackPanelをターゲットにする場合:これはOKですが、私は実際に要素を結合することによって、それをやりたい

<StackPanel x:Name="MyStackPanel"> 

public MyView() 
{ 
    InitializeComponent(); 
    this.MyStackPanel.DataContext = myaInstance; 
} 
+0

「」へstackpanel :) – Yanshof

+0

@ Yanshof:次に、スタックパネルに名前を与え、その代わりにDataContextを設定します。私は例を更新する –

関連する問題