2009-05-05 4 views
0

BlendでCLRオブジェクトにデータバインドを設定し、Silverlightコントロール/ページを設計できる機能が大好きです。私の問題は、DataTemplateとして使用されるユーザーコントロールの作成です。ブレンドではすべて機能しますが、デザイン時にのみ機能します。問題は、私はBlendでコントロールを編集しています、と私はCLRオブジェクトのプロパティにテキストボックスを言うバインドするとき、それは私にこの与えることである。BlendのCLRオブジェクトに対するSilverlightデータバインディング

Text="{Binding Mode=OneWay, Path=TestAccount.Name, Source={StaticResource TestDataDS}}" 

をしかし、私はアプリケーションを実行する準備ができていたとき、およびリストボックスと言うためのDataTemplate内でそのユーザーコントロールを使用して、私はそれだけでこのように見える必要があります。

Text="{Binding Mode=OneWay, Path=Name}" 

を私はBelndに設計する気の利いたバインディングを使用するにはどうすればよいが、&検索/置換をタッチする必要はありませ私がプロジェクトを実行する準備ができたら、これらのバインディングはすべて必要ですか?私は設計時と実行時の両方で動作するアプローチを探しています。 Expression Blendの中CLRオブジェクトへのデータバインディングを作成するために

おかげで、

答えて

0

は、あなたが「作成データバインド」ダイアログの「DataFieldプロパティ」タブを使用する必要はありません。実際、このようにすることは非常にまれです。

カスタムパス式を使用する方法が最も一般的です。 [カスタムパス式を使用する]チェックボックスをオンにして、バインドするプロパティの名前を入力するだけです。データコンテキストを指定しないままにすると、データバインディングは、DataContextとなるオブジェクトが何であっても、指定したパスに解決されます。

あなたはD設定することにより、それを行うことができますDataContextの設計時に設定したい場合:必ずが正しくのxmlnsを定義すること、のDataContextプロパティを:D =「...」

+0

私はあなたに従わないと思います。 TestDataというシンプルなクラスを作成しました。これを使用してプロジェクトから水和オブジェクトを戻します。たとえば、名前プロパティを持つアカウントオブジェクトです。したがって、上記で貼り付けたコードでは、Expression Blendの中にリアルタイムで表示され、TextBlock TextプロパティをPath = {MyObject}。{Property}にバインドすると、Blendはオブジェクトに到達し、その水和物の値を取得しますオブジェクト。だから、デザイナーを見ると、その中にテキストが入ったテキストブロックが見えます。これにより、レイアウトを操作してコントロールがどのように見えるかを見ることができます。しかし、バインディングの構文は良いです... –

+0

あなたはブレンドの中にいるとき。私が実行時にバインディングはもはや有効ではありません。なぜなら、テストオブジェクトに直接バインドする必要がないからです。DataContext内のオブジェクトにバインドする必要があります。したがって、最初のコードスニペットはBlendで動作しますが、2番目のコードスニペットは実行時に機能します。私が望んでいるのは、私に両方を与える解決策です。 –

+0

私は、ブレンド内から実行時に動作するバインディングを設定する方法だけでなく、DesignTimeバインディングとランタイムバインディングが必要なことを理解しています。 – markti

0

あなたはブレンド2を使用している場合依存関係注入を使用するJonas Follesoe's design time/run time blog postを見てみることをお勧めします。

あなたがブレンド3を使用するには十分に幸運なら、あなたがブレンドでバインディングを設定している場合、そのcheck this out

、「明示的なデータコンテキスト」タブが利用できるのですか?

関連する問題