2009-09-15 7 views
6

Asp.netのBind()メソッドを使用すると、プロパティのいずれかではなくオブジェクト自体にバインドするにはどうすればよいですか?オブジェクト自体にバインドする、そのプロパティではない

+1

をあなたが結合したい正確に何をより明確に指定してください。リストコントロールに...? – Juri

+0

私はFromViewコントロール内のオブジェクトにバインドします。 FormView内には、バインドされている型のプロパティを定義するUserControlがあります。 たとえば、FirstNameとLastNameの2つのプロパティを定義するNameという名前のクラスがあるとします。 NameクラスのインスタンスはFormViewにバインドされています。 FirstNameまたはLastNameをBind( "FirstName")とBind( "LastName")を呼び出すことでUserControlに渡したくない場合、Nameインスタンス自体をUserControlに渡したいと思います。 – Ryan

答えて

2

私はこれを回避するために、単にSelfReferenceというプロパティを追加しました。これは単にthisを返します。誰かがこれを読んでより良い解決策を持っているなら、私はそれを聞きたいと思います。

1

私は正確にあなたが縛りたいと思っているのか分かりません。現時点で私には分かりやすいのは、UIコントロールの一部、たとえばDropDownコントロールにバインドすることだけです。

表示される値には通常いくつかのテキストプロパティがあり、識別子として機能する実際の値の値プロパティがあります。 DataValueFieldあり

  • DataTextField
  • ドロップダウン

    • では、あなたがプロパティ "ファーストネーム" と "ID" を持つオブジェクトを持っていることを考えるとDataTextField = "Firstname"DataValueField = "Id"を指定します。

      リストでは、ASPXコードで直接Eval関数を使用するか、リストテンプレート内にサーバー側のコントロール(リテラル、ラベル)を追加してItemDataBoundイベントを実装します(例としてRepeaterを使用します)。 Here'sこれをさらに説明する良い例です。

      私は少しを助けることができた希望;)

    2

    私はあなたがこの

    public class Person 
    { 
        public string FirstName { get; set; } 
        public string LastName { get; set; } 
    } 
    

    そして、あなたがどこかのGridView内にPersonオブジェクトをバインドする場合のようなオブジェクトにしている場合ライアンは以下のように、ここで何を意味するかと思いますまたはRepeaterを使用すると、Personのみがバインドされ、そのプロパティの1つからデフォルトのバインド値が取得されます。 サポート私たちは、私が<%# Eval("Ryan") %>を呼び出してから、変数の値を取得したいので、変数RyanからPersonタイプを持ってはいない

    <%# Eval("Ryan.FirstName") %>は、私はクラスの属性DefaultBindingPropertyを入れてみましたが、それは

    [System.ComponentModel.DefaultBindingProperty("FirstName")] 
    public class Person 
    { 
        public string FirstName { get; set; } 
        public string LastName { get; set; } 
    } 
    

    そうに働いていませんどのように正しくそれを行うには知っていますか?

    +0

    オブジェクトのバインドを行いたいのではなく、オブジェクトのバインドをしたい。 – Ryan

    0

    何とか方法を考え出しました。実際にそれがである「http://msdn.microsoft.com/en-us/library/ms752347.aspx

    ListBox ItemsSource="{**Binding**}" IsSynchronizedWithCurrentItem="true"/> 
    

    なお、当社は、値へのパスは、あなたが全体にバインドするシナリオでは、結合の必要な4つの成分の一つである使用することを強調しているが、オブジェクトの場合、使用する値はバインディング元オブジェクトと同じになります。そのような場合、パスを指定しないようにすることができます。次の例を考えてみましょう:

    XAML コピー

    1

    あなたが代わりにContainer.DataItemを使用することがあります。 Item='<%# Container.DataItem %>'

    関連する問題