在绑定之后,从UIElement中查找Bound属性

时间:2010-09-11 15:15:57

标签: silverlight data-binding 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" };
    }

所以问题是在代码背后。如何获取绑定(Adress)的属性(字符串)。我需要它作为属性访问customer.adress,以分配另一个变量。 (在这种情况下,当事件发生时,例如在此之后发生。已加载。)

所以我得到了UIElement(发件人),我可以将客户表格改为DataContext

简而言之,我如何获取绑定对象的属性名称。 (绑定对象很容易找到我只是使用DataContext来获取客户,但我在哪里可以得到属性的名称?来自发件人的xaml(例如。name)

(我计划使用反射来访问客户内部的“地址”),但是如何获取textBox中文本所绑定的属性的“名称”。

2 个答案:

答案 0 :(得分:2)

尝试以下方法:

为您的TextBox命名,以便您可以从代码中访问它:

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

在代码背后:

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

绑定属性的名称现在可以从以下字符串中提取:

bExpr.ParentBinding.Path.Path

答案 1 :(得分:0)

但是,我会建议不要这样做;尝试使用已建立的MVVM原则,并在视图模型中而不是从视图中找出绑定值。如果您更清楚地说明问题,例如,如果列表中有多个客户,并且您需要所选客户的地址,我们可能会进一步提供帮助。