什么时候使用Elementbinding设置label.Target属性?

时间:2010-11-11 13:06:10

标签: silverlight

我在Silverlight中有一个小的testview,它包含以下网格:

<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属性。我希望在视图的构造函数中调用InitializeComponent()后,在label.Target中找到对文本框的引用,但它仍为null。

知道我在这里可能缺少什么吗?

编辑: 这里有点澄清。此视图从代码初始化,从不在任何可见视图的自身部分。它是搜索功能的一部分,我搜索匹配某些条件的控件并将它们放在搜索结果页面上。在这种情况下,如果标签与标准匹配,则它应该是搜索结果的一部分以及基于目标属性的关联控件。不确定何时执行元素绑定,但到目前为止看起来它不能很快绑定(或者根本没有属于可视树?)。

2 个答案:

答案 0 :(得分:1)

问题是在构造函数期间,数据绑定不能保证已经执行。尝试在视图的加载事件中测试它。 E.g: -

  InitializeComponent()
  Loaded += (s, args) => { MessageBox.Show((label.Target != null).ToString()); }

答案 1 :(得分:0)

据我所知,简单地初始化视图而不将其添加到父视图时,不支持Elementbinding。其他绑定有效,但不是元素绑定:(