2011-07-21 19 views
2

私は以下のようなWP7 XAMLで単純な線を描こうとしています。静的な座標値では、これは正常に動作します。私は必要なものWP7のコントロール間の動的バインディングXAML

<Line Stroke="White" 
     X1="1" Y1="1" 
     X2="200" Y2="1" /> 

は、そのイド又はとして整合性の値に基づいて、同じキャンバス上の他のコントロールに対する相対座標値を結合することです。正しいコントロールが結ばれたら、私はそれを取得する必要がありますおよび/またはトップキャンバスの場所。漠然とした擬似コードを使用して、ここで

<Line Stroke="White" 
     X1="{Binding Canvas.Left, Source={Binding <a_control_where_a_property_equals_some_value>}}" Y1="1" 
     X2="200" Y2="1" /> 

はノー成功したシナリオを結合の数を試してみた...私が行うことができるようにしたいと思いますものです。余分な複雑さは、Windows Phone 7(WP7)バインディングであり、完全なXAMLではありません。

注:すべてのコントロールは、実行時に追加されるため、静的に定義されません。

任意の提案???

+0

何を求めていることは言うあたり、実際には不可能です。あなたは、ビジュアルツリーを横切って、束縛されているコントロールが所与の値を持つプロパティを持つかどうかを探しています。より説明したり、コードを投稿したりする必要があります。 –

答えて

1

ご希望の方はElementNameをご利用ください。それ以外に、両方のコントロールがバインドされる共通のプロパティをどこかに公開する必要があります。おそらくビューモデルではありますが、設定によって異なります。 ElementNameの

サンプル:

<Canvas> 
    <Line x:Name="line1" Stroke="White" X1="1" Y1="1" X2="200" Y2="1" /> 
    <Line Stroke="White" X1="{Binding ElementName=line1, Path=X1}" Y1="10" X2="200" Y2="1" /> 
</Canvas> 
+0

クイックフィードバックをお寄せいただきありがとうございます。* ElementName *バインディングを使用して* Canvas.Left *値を取得する方法のサンプルを提供できますか?さて、これはXAMLを削除してXNAでこの部分を行う必要があるケースですか? – JoeGeeky

+1

@Joe - サンプルを追加しました。それはあなたが何をしているかによって異なりますので、別の方法が良いかどうかは言えません。私はおそらく両方の共通のプロパティにバインドすることをお勧めします、それは一般的により良いデザイン(つまり、ビューモデルのような)です。 – CodeNaked

関連する問題