zoukankan      html  css  js  c++  java
  • WPF中如何使用代码操作数据模板生成的控件

     有一个Listbox,里面的Item是通过数据模板生成的,如下所示:

    <Border Margin="15" BorderBrush="Aqua" BorderThickness="2" Padding="8" CornerRadius="5">
          <StackPanel>
            <ListBox Name="myListBox" ItemTemplate="{StaticResource myDataTemplate}"
                     IsSynchronizedWithCurrentItem="True">
              <ListBox.ItemsSource>
                <Binding Source="{StaticResource InventoryData}" XPath="Books/Book"/>
              </ListBox.ItemsSource>
            </ListBox>
            <Button Margin="10"
                    Click="DataTemplateFindElement">Get text of textBlock in DataTemplate</Button>
          </StackPanel>
        </Border>

    Listbox使用的数据模板如下: 

    <DataTemplate x:Key="myDataTemplate">
          <TextBlock Name="textBlock" FontSize="14">
            <TextBlock.Text>
              <Binding XPath="Title"/>
            </TextBlock.Text>
          </TextBlock>
        </DataTemplate>

    使用下面的代码就可以获取数据模板里面TextBlock中的内容了。

    ListBoxItem myListBoxItem = (ListBoxItem)(myListBox.ItemContainerGenerator.ContainerFromItem(myListBox.Items.CurrentItem));
    ContentPresenter myContentPresenter = FindVisualChild<ContentPresenter>(myListBoxItem);
    DataTemplate myDataTemplate = myContentPresenter.ContentTemplate;    
      TextBlock myTextBlock = (TextBlock)myDataTemplate.FindName("textBlock", myContentPresenter);
    MessageBox.Show("The text of the named TextBlock in the DataTemplate of the selected list item: " + myTextBlock.Text

    上面代码调用的函数如下:

    private childItem FindVisualChild<childItem>(DependencyObject obj) where childItem : DependencyObject
        {
            for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
            {
                DependencyObject child = VisualTreeHelper.GetChild(obj, i);
                if (child != null && child is childItem)
                    return (childItem)child;
                else
                {
                    childItem childOfChild = FindVisualChild<childItem>(child);
                    if (childOfChild != null)
                        return childOfChild;
                }
            }
            return null;
        }

  • 相关阅读:
    慢sql
    drf 和django 字段参数解析
    django uwsgi
    django 中间件原理图和实现方法
    解决 控制台console导入模型报错 django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured.
    版本控制器 django全局和局部配置
    极客论坛Cpu瓶颈定位思路
    jmeter grpc 自定义开发java请求案例
    论文阅读笔记四十七:Generalized Intersection over Union: A Metric and A Loss for Bounding Box Regression(CVPR2019)
    论文阅读笔记四十六:Feature Selective Anchor-Free Module for Single-Shot Object Detection(CVPR2019)
  • 原文地址:https://www.cnblogs.com/sjqq/p/6950525.html
Copyright © 2011-2022 走看看