1

3つの文字列を含むクラスがあります

例えば:

class abc
        {

            public string a, b, c;

            public abc(string d, string e, string f)
            {
                a = d;
                b = e;
                c = f;
            }


       };

private void button1_Click(object sender, RoutedEventArgs e)
        {
            abc obj = new abc("abc1","abc2","abc3");

            var MainPage1 = new MainPage();
            MainPage1.DataContext = obj;
        }

テキストブロックにバインドしようとすると、バインドされません

<TextBlock Height="23" HorizontalAlignment="Left" Margin="201,66,0,0" Name="textBlock1" **Text="{Binding Path=a}"** VerticalAlignment="Top" />
        <TextBlock Height="23" HorizontalAlignment="Left" Margin="201,107,0,0" Name="textBlock2" **Text="{Binding Path=b}"** VerticalAlignment="Top" />
        <TextBlock Height="23" HorizontalAlignment="Left" Margin="201,156,0,0" Name="textBlock3" **Text="{Binding Path=c}"** VerticalAlignment="Top" />

何かが足りないと思いますが、それを見つけるには助けが必要です。ありがとう

4

2 に答える 2

1

フィールドへのバインドは許可されていません。クラスのプロパティにします。

于 2012-05-28T07:01:43.027 に答える
0

MSDNから: データ バインディング エンジンは、共通言語ランタイム (CLR) オブジェクトのパブリック プロパティ、サブプロパティ、およびインデクサーをサポートします。

したがって、パブリック フィールドの代わりにプロパティを使用します。

public class abc
{

   public string a { get; set; }
   public string b { get; set; }
   public string c { get; set; }

   public abc(string d, string e, string f)
   {
      a = d;
      b = e;
      c = f;
   }

}

DataContextこれで、MainPage のコンストラクターで egとして設定できます。

public partial class MainPage : UserControl
{
    public MainPage()
    {
        InitializeComponent();

        abc obj = new abc("abc1", "abc2", "abc3");

        this.DataContext = obj;
    }
}
于 2012-05-28T07:01:39.343 に答える