Silverlight在数据模板中查找控件

时间:2012-01-15 01:26:14

标签: xaml silverlight controltemplate

我有以下xaml代码:

<dxb:BarButtonItem Name="btnPrev" Cursor="Hand" ItemClick="btnPrev_ItemClick">
<dxb:BarButtonItem.ContentTemplate>
<DataTemplate>
<Image x:Name="imgSkipLeft" Source="/ProjectTool;component/images/arrowleft.png" Height="16" Width="16">
<ToolTipService.ToolTip>
<TextBlock x:Name="txtBlockTip_Left"/>
</ToolTipService.ToolTip>
</Image>
</DataTemplate>
</dxb:BarButtonItem.ContentTemplate>
</dxb:BarButtonItem>

如何找到txtBlockTip_Left并修改文本

2 个答案:

答案 0 :(得分:0)

而是尝试在DataTemplate上找到TextBlock以更改文本,最好通过绑定设置文本,然后更改Text属性绑定的属性。以下资源有一个关于如何在DataTemplate中使用数据绑定的示例:http://www.silverlight.net/learn/data-networking/binding/data-binding-to-controls-%28silverlight-quickstart%29

答案 1 :(得分:0)

使用VisualTreeHelperExtensions类并在数据模板中放置一个网格并为其命名,在下面的示例中,名称为grdTemplate。

var bttn= btnPrev.ItemContainerGenerator.ContainerFromItem(btnPrev);
var dataTemplate = bttn.GetDescendantsOfType<Grid>().FirstOrDefault(g => g.Name == ("grdTemplate"));
var textBlocks= VisualTreeHelperExtensions.GetDescendantsOfType<TextBlock>(dataTemplate);
TextBlock txtBlockTip_left = textBlocks.ElementAt(0);