0

この例は学習用です...

Visual Studio C# でプロジェクトを開始しました。これは非常に単純です。コード ビハインドでインスタンス化される Phone クラスがあります。Blend 3 を使用して GUI を追加したいと思います。

public class Phone:DependencyObject
{
    public string PhoneMake
        {
            get { return (string)GetValue(PhoneMakeProperty); }
            set { SetValue(PhoneMakeProperty, value); }
        }

        public static readonly DependencyProperty PhoneMakeProperty =
            DependencyProperty.Register("PhoneMake", typeof(string), typeof(Phone));

}

背後にあるコード:

public partial class Window1 : Window
{
    public Window1()
    {
        InitializeComponent();
    }

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        Phone Nokia = new Phone();
        Nokia.PhoneMake = "Nokia";
    }
}

このプロジェクトを Blend 3 にインポートして、グラフィック要素を追加し、Nokia オブジェクトの PhoneMake プロパティにバインドできるようにします。

[ライブ データ ソースの追加] ボタンをクリックすると、新しいオブジェクトをインスタンス化するオプションしか表示されず、Nokia オブジェクトを選択する方法がわかりません。

このインスタンス化されたオブジェクト Nokia をデータ ソースとして設定するにはどうすればよいですか?

Blendはこれを行うことができるはずですか、それとも私がすべて間違っているのでしょうか?

Visual Studio C# Express 2008 および Blend 3 を使用。

4

1 に答える 1

1

データペインで、データバインディング用の新しいデータソースとして任意のCLRオブジェクトをインスタンス化できます。

使用するクラスのプロジェクトがビルドされていることを確認してください。

データペインの右上隅にあるアイコンをクリックし、[新しいオブジェクトデータソースの定義]を選択します。これにより、プロジェクト内の任意のCLRクラスを選択できるようになります(適格となるには、デフォルトのコンストラクターが必要だと思います)。オブジェクトはデータソースにラップされます。

これを行うと、オブジェクトがデータペインに表示され、ドラッグアンドドロップまたはデータバインディングダイアログ(プロパティマーカー、プロパティインスペクターの各バインド可能なプロパティの横にある小さな長方形を介して)を使用したデータバインディングに使用できます。 。

明らかに、データバインドリストを作成するには、オブジェクトを物のコレクションにする必要があります。そのためにObervableCollection<>を使用するのが好きです。

データソースとしてインスタンス化されたオブジェクトは、実行時にコードからもアクセスできることに注意してください。データソースを作成したオブジェクトを見つけるには、FindResourceを使用して、最初に作成したときに付けた名前のデータソースを検索します。

于 2009-11-26T09:07:03.197 に答える