Поиск свойства Bound из элемента UIElement после его привязки - PullRequest
1 голос
/ 11 сентября 2010

Корпус:

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 в качестве свойства, чтобы назначить другую переменную. (в этом случае, когда событие происходит. Например, после this.Loaded происходит.)

Итак, я получил UIElement (отправитель), и я могу получить от клиента форму DataContext.

Короче, как мне получить имя свойства объекта привязки. (объект привязки легко найти, я просто использую DataContext, чтобы получить клиента, но где я могу получить имя свойства? которое находится в xaml (например, name) от отправителя)

(я планирую использовать рефлексию, если она необходима для доступа к «адресу» внутри клиента), но как получить «имя» свойства, с которым связан текст в textBox.

Ответы [ 2 ]

2 голосов
/ 11 сентября 2010

Попробуйте следующее:

Дайте вашему TextBox имя, чтобы вы могли получить к нему доступ с кода:

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

В коде позади:

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

Имя привязанного свойства теперь можно извлечь в виде строки из:

bExpr.ParentBinding.Path.Path
0 голосов
/ 13 сентября 2010

Однако я бы посоветовал против этого;попытаться использовать установленные принципы MVVM и выяснить связанные значения в моделях представления вместо представлений.Если вы изложите свою проблему более четко, например, если в списке несколько клиентов и вам нужен адрес выбранного, мы можем помочь вам в дальнейшем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...