我在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。
知道我在这里可能缺少什么吗?
编辑: 这里有点澄清。此视图从代码初始化,从不在任何可见视图的自身部分。它是搜索功能的一部分,我搜索匹配某些条件的控件并将它们放在搜索结果页面上。在这种情况下,如果标签与标准匹配,则它应该是搜索结果的一部分以及基于目标属性的关联控件。不确定何时执行元素绑定,但到目前为止看起来它不能很快绑定(或者根本没有属于可视树?)。
答案 0 :(得分:1)
问题是在构造函数期间,数据绑定不能保证已经执行。尝试在视图的加载事件中测试它。 E.g: -
InitializeComponent()
Loaded += (s, args) => { MessageBox.Show((label.Target != null).ToString()); }
答案 1 :(得分:0)
据我所知,简单地初始化视图而不将其添加到父视图时,不支持Elementbinding。其他绑定有效,但不是元素绑定:(