Когда устанавливается свойство label.Target при использовании Elementbinding? - PullRequest
1 голос
/ 11 ноября 2010

У меня есть небольшой тестовый просмотр в Silverlight, который состоит из следующей сетки:

<Grid x:Name="LayoutRoot" Background="White">
    <Grid.ColumnDefinitions>
        <ColumnDefinition />
        <ColumnDefinition />
    </Grid.ColumnDefinitions>

    <Controls:Label x:Name="label" Content="LabelContent" Target="{Binding ElementName=textBox}" />
    <TextBox x:Name="textBox" Text="Foobar" Grid.Column="1" />
</Grid>

Не уверен, что я делаю не так, но похоже, что свойство target не установлено на меткеконтроль.Я ожидал найти ссылку на текстовое поле в label. Цель после InitializeComponent () была вызвана в конструкторе для представления, но она все еще нулевая.

Есть идеи, чего мне здесь не хватает?

РЕДАКТИРОВАТЬ: Небольшое уточнение здесь.Это представление инициализируется из кода и никогда не является частью какого-либо видимого представления.Это часть функции поиска, где я ищу элементы управления, соответствующие некоторым критериям, и помещаю их на страницу результатов поиска.В этом случае, если метка соответствует критериям, она должна быть частью результата поиска вместе со связанным элементом управления на основе целевого свойства.Не уверен, когда выполняется привязка элемента, но до сих пор кажется, что он не связывается достаточно быстро (или вообще не относится к визуальному дереву?).

Ответы [ 2 ]

1 голос
/ 11 ноября 2010

Проблема в том, что во время конструктора привязка данных не гарантируется. Попробуйте вместо этого проверить его в загруженном событии представления. E.g.:-

  InitializeComponent()
  Loaded += (s, args) => { MessageBox.Show((label.Target != null).ToString()); }
0 голосов
/ 03 декабря 2010

Насколько я могу заключить, Elementbinding не поддерживается при простой инициализации представления без добавления его в родительское представление. Другие привязки работают, но не привязка элементов: (

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