2010-09-11 55 views
1

案後:尋找綁定屬性,從的UIElement,它已經綁定

public class customer 
{ 
    public string Adress { get; set; } 
} 

的XAML:

<Grid x:Name="LayoutRoot" Background="White" > 
    <StackPanel> 
     <TextBox Text="{Binding Adress}"/> 
    </StackPanel> 
</Grid> 

的.cs

public MainPage() 
    { 
     InitializeComponent(); 
     LayoutRoot.DataContext = new customer() { Adress = "Some Adr" }; 
    } 

所以問題是,在代碼背後。我如何獲得綁定(地址)的屬性(字符串)。我需要它作爲屬性訪問customer.adress,以分配另一個變量。 (在這種情況下,當事件發生時,例如在此之後,發生負載)。

因此,我得到UIElement(發件人),並且我可以從客戶表單中獲取其DataContext

總之,如何獲取綁定對象的屬性名稱。 (該綁定對象很容易找到我只使用DataContext來獲取客戶,但我可以在哪裏獲得屬性的名稱?在發件人的xaml(例如名稱)

(我計劃如果需要訪問客戶中的「地址」,則使用反射),但如何獲取文本框中文本綁定的屬性的「名稱」。

回答

2

嘗試以下操作:

給您TextBox一個名字,這樣你就可以在代碼中訪問它:

<Grid> 
    <TextBox Name="textBox" Text="{Binding Adress}" /> 
</Grid> 

在後面的代碼:

BindingExpression bExpr = textBox.GetBindingExpression(TextBox.TextProperty); 

綁定屬性的名稱現在可以從字符串中提取:

bExpr.ParentBinding.Path.Path 
+0

謝謝你的回答,我現在可以使用反射來獲得屬性。 – ReLoad 2010-09-13 20:43:51

+0

有沒有一種方法可以讓我們在沒有給它的KeyUp事件上的控件命名的情況下得到相同的結果? – Chatur 2016-05-11 19:43:32

0

但是,我建議不要這樣做;嘗試使用已建立的MVVM原則,並在視圖模型中而不是視圖中查找綁定值。如果您更清楚地陳述您的問題,例如,如果列表中有多個客戶,並且您需要選定地址,我們可能會進一步提供幫助。

+0

兩者都有多重和單一。但是,第一個答案是可以的。我用它作爲解決方案的基礎。它的工作完美。 Maby我可以發佈解決方案嗎? – ReLoad 2010-09-13 20:46:43