0

簡単に言うと、DataContextバインディングを使用して、別のクラスのパブリック自動プロパティの値をラベルに割り当てたいと思います。

したがって、次のようなパブリック自動プロパティを含むクラスがあります。

public class MyData
{
    public string DogName { get; set; }
}

私のWPFフォームは次のようになります。

WPF

私のWPFフォームのCodeBehindは次のとおりです。

public partial class MainWindow : Window
{
    private MyData myData;

    public MainWindow()
    {
        InitializeComponent();
    }

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        myData = new MyData();
        myData.DogName = "Lulu";

        label1.DataContext = myData.DogName;
    }
}

ただし、これはlabel1の値を「Lulu」に変更するのではなく、「Label」のままです。私は何を逃しましたか?

ありがとう

4

1 に答える 1

2

これは、DataContexts を操作するための一般的な方法ではありません (お見せしたMyDataように、クラスはまったく目的を果たさないため)。代わりにこれを試してください:

//C#
label1.DataContext = new MyData{ DogName = "Lulu" };

//xaml
<Label Content="{Binding Path=DogName}"/>

たとえば、MyData を使用してラベルの幅などを含めることもできます。

別の (おそらく最も使用される) 方法は、親の DataContext を設定し、個々の要素がそのプロパティを使用するようにすることです。

//C#
class MyData
{
  public strig DogName{ get; set; }
  public strig CatName{ get; set; }
}

this.DataContext = new MyData{ DogName = "Lulu", CatName = "Fifi" };

//xaml
<Label Content="{Binding Path=DogName}"/>
<Label Content="{Binding Path=CatName}"/>
于 2012-07-29T08:13:19.557 に答える