2011-07-21 23 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