3

これは基本的なもののようで、どういうわけか複製することができますが、インターネットで見つけた答えのどれも私にとってはうまくいきませんでした..

UI (XAML) の要素を、所有しているクラスのインスタンスのメンバーにバインドしたいと考えています。それでは、単純な XAML を用意しましょう

<Window x:Class="gUSBampReader.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="601" Width="857" xmlns:my="clr-namespace:binding;assembly=binding">

   <TextBlock Name="UITextBlock"/>  <!-- THIS IS THE TEXT BOX TO BE BINDED -->

</Window>

そして反対側にはクラスがあります

public class foo
{
    objectThatImplementsINotify a; //lets say that's equivalent to an string
}

public partial class mainWindow : Window
{
    public foo externalMembers;

    public mainWindow()
    {
       externalMembers = new foo();
       //Let's show externalMembers.a in UITextBlock!
    }
}

XAML と C# の両方からこのバインディングを行う方法を学びたいと思います。外部メンバーが存在し、開発時にバインドできる場合もありますが、動的であり、実行時に作成してバインドする必要がある場合もあります。

そして最後に..いくつかの例を含むdataBindingの優れたチュートリアルをお勧めできますか? XAML には多くのものがあります (しかし、私はそれを機能させることができませんでした)。しかし、C# にはそれほど多くはありません。

前もって感謝します !!!

4

2 に答える 2

3

ウィンドウの DataContext をそれ自体に設定する必要があります。

public mainWindow()
{
   externalMembers = new foo();
   DataContext = this;
   //Let's show externalMembers.a in UITextBlock!
}

そして、テキストブロックをバインドする必要があります:

<TextBlock Name="UITextBlock" Text="{Binding externalMembers.a}"/>

externalMembers.aそれを機能させるには、フィールドではなくプロパティに変更する必要があります。

public class foo
{
    objectThatImplementsINotify a { get; set; }
}
于 2012-11-29T08:00:00.243 に答える
1

私の知る限り、バインディングはプロパティでのみ機能し、フィールドでは機能しません。コードでバインドを作成する方法など、詳細については、http: //msdn.microsoft.com/en-us/library/ms752300.aspxを参照してください。フィールドの代わりにプロパティを使用するようにクラスを変更する必要があります。

于 2012-11-29T07:59:17.177 に答える