【问题标题】:Silverlight Find Control in Data TemplateSilverlight 在数据模板中查找控件
【发布时间】:2012-01-15 01:26:14
【问题描述】:

我有以下 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并修改文字

【问题讨论】:

    标签: xaml silverlight controltemplate


    【解决方案1】:

    与其试图在 DataTemplate 上找到 TextBlock 来更改文本,不如通过绑定设置文本,然后更改 Text 属性绑定到的属性。以下资源提供了有关如何在 DataTemplate 中使用数据绑定的示例:http://www.silverlight.net/learn/data-networking/binding/data-binding-to-controls-%28silverlight-quickstart%29

    【讨论】:

      【解决方案2】:

      使用 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);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-06-05
        • 2010-12-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多