2010-05-14 63 views
1

我試圖對數據綁定的工作原理有所瞭解,但即使在幾個教程之後,我對數據綁定的工作原理也有了基本的瞭解。因此,對於那些更熟悉silverlight的人來說,這個問題似乎很重要。即使它是微不足道的,請將我指向一些處理這個問題的教程。我所能找到的所有東西都只是通過在父頁面上添加數據綁定來解決這個問題。(我不能在我的情況下使用)。如何通過兩個xaml文件創建數據綁定?

對於這個例子的目的,讓我們假設,我們有5個文件:

starter.cs 
button1.xaml + codeBehind 
button2.xaml + codeBehind 

兩個按鈕的代碼產生的起動器(的.cs)文件中,然後加入一些MapLayer

button1 my_button1 = new button1(); 
button2 my_button1 = new button2(); 

someLayer.Children.Add(my_button1); 
someLayer.Children.Add(my_button2);  

我的目標是連接兩個按鈕,以便它們始終顯示相同的「文本」(即my_button1.content == my_button2.content = true;)。因此,當某些更改my_button1.content時,此更改應傳播到另一個按鈕(雙向綁定)。

此刻我button1.xaml看起來是這樣的:

<Grid x:Name="LayoutRoot"> 
<Button x:Name="x_button1" Margin="0,0,0,0" Content="{Binding ElementName=x_button2, Path=Content}" ClickMode="Press" Click="button1_Click"/> 
</Grid> 

但寄託都認爲我離開是沒有內容的按鈕全部,它只是空白的結合默默地失敗。 我如何在我描述的上下文中創建數據綁定?最好的代碼,而不是XAML)

在此先感謝

回答

0

你需要閱讀文件的塊是這樣的:XAML Namescopes

你Button1的XAML具有約束力的尋找與該名稱的元素「x_button2 」。然而,在實際的應用程序中,可能有許多控件依次具有嵌套控件。所有這些控件都有各種UI元素,其中一些可能有名稱。

如果整個應用程序中的所有名稱都是唯一的,那麼將無法完成任何操作。然而,如果你的button1能夠在其實際知道的(它自己的xaml)以外的視覺樹中的某處找到另一個控件的存在,那麼這就需要是真實的。

因此,每個加載的Xaml文檔都存在於它自己的「namescope」中,而其他名稱的搜索僅限於那個「namescope」。

這個問題的各種解決方案取決於你真正的需求是什麼,而不是你的問題中的簡化問題。

通常,您將每個控件的內部按鈕Content屬性綁定到的DependencyProperty。在「MapLayer」中調用它,然後可以將其中一個按鈕控件上的屬性綁定到另一個按鈕控件上。