数据模板化概述---MSDN

顶会新宠!Gate+Attention创新思路发A会 性能提升:在Places2自然场景和CelebA-HQ人脸数据集上,与以往方法相比,该系统在自由形式掩码修复任务中取得了更高的质量和更低的误差(例如,平均ℓ1误差和ℓ2误差显著降低)。硬件效率提升:Griffin和Hawk在TPU-v3上的训练效率与Transformer相当,且在推理时具有更低的延迟和显著更高的吞吐量。门控卷积:提出了一种新的门控卷积机制,通过学习每个通道在每个空间位置的动态特征选择机制,解决了传统卷积将所有输入像素视为有效像素的问题。 阅读详情
 
Windows Presentation Foundation
数据模板化概述

更新:2007 年 11 月

WPF 数据模板模型为定义数据的表示提供了很大的灵活性。WPF 控件具有支持自定义数据表示的内置功能。本主题首先演示如何定义 DataTemplate,然后介绍其他数据模板功能,例如根据自定义逻辑选择模板和支持显示分层数据。

本主题包括下列各节。

本主题重点介绍数据模板功能,不介绍数据绑定概念。有关基本数据绑定概念的信息,请参见数据绑定概述。

DataTemplate 用于数据表示,是 WPF 样式和模板模型提供的许多功能中的一种。有关 WPF 样式和模板模型的介绍(例如如何使用 Style 来设置控件的属性),请参见样式设置和模板化主题。

另外,了解Resources也很重要,它实际上是有关使对象(例如,Style 和 DataTemplate)成为可重用对象的内容。有关资源的更多信息,请参见资源概述。

本节包含下列子节。

为了说明 DataTemplate 为什么这么重要,让我们演示一个数据绑定的示例。在本示例中,有一个绑定到 Task 对象列表的 ListBox。每个 Task 对象都有 TaskName (string)、Description (string)、Priority (int) 和类型 TaskType 的属性,它是一个 Enum,其值为 Home 和 Work。

<Window x:Class="SDKSample.Window1"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:local="clr-namespace:SDKSample"
  Title="Introduction to Data Templating Sample">
  <Window.Resources>
    <local:Tasks x:Key="myTodoList"/>


...



</Window.Resources>
  <StackPanel>
    <TextBlock Name="blah" FontSize="20" Text="My Task List:"/>
    <ListBox Width="400" Margin="10"
             ItemsSource="{Binding Source={StaticResource myTodoList}}"/>


...


  </StackPanel>
</Window>

没有 DataTemplate

如果没有 DataTemplate,我们的 ListBox 当前具有如下外观:

数据模板示例屏幕快照

由于没有任何特定说明,ListBox 在尝试显示集合中的对象时,默认情况下会调用 ToString。因此,如果 Task 对象重写 ToString 方法,则 ListBox 显示基础集合中每个源对象的字符串表示形式。

例如,如果 Task 类以这种方式重写 ToString 方法,其中 name 是 TaskName 属性的字段:

public override string ToString()
{
    return name.ToString();
}

则 ListBox 如下所示:

数据模板示例屏幕快照

但是,这是受到限制的,并不灵活。另外,如果您要绑定到 XML 数据,您不能重写 ToString。

定义简单 DataTemplate

该解决方案定义 DataTemplate。这样做的一种方式是将 ListBox 的 ItemTemplate 属性设置为 DataTemplate。DataTemplate 中指定的内容变成数据对象的可视结构。以下 DataTemplate 相当简单。我们要给出的说明是:每项显示为 StackPanel 中的三个 TextBlock 元素。每个 TextBlock 元素绑定到 Task 类的一个属性。

<ListBox Width="400" Margin="10"
         ItemsSource="{Binding Source={StaticResource myTodoList}}">
   <ListBox.ItemTemplate>
     <DataTemplate>
       <StackPanel>
         <TextBlock Text="{Binding Path=TaskName}" />
         <TextBlock Text="{Binding Path=Description}"/>
         <TextBlock Text="{Binding Path=Priority}"/>
       </StackPanel>
     </DataTemplate>
   </ListBox.ItemTemplate>
 </ListBox>

本主题中的示例的基础数据是 CLR 对象的一个集合。如果您要绑定到 XML 数据,基本概念相同,但是语法稍微不同。例如,不是让 Path=TaskName,而是将 XPath 设置为 @TaskName(如果 TaskName 是 XML 节点的属性)。

现在 ListBox 如下所示:

数据模板示例屏幕快照

将 DataTemplate 创建为资源

在上面的示例中,我们定义了 DataTemplate 内联。更为常见的是在资源部分中定义它,以使其成为一个可重用的对象,如下面的示例所示:

<Window.Resources>


...


<DataTemplate x:Key="myTaskTemplate">
  <StackPanel>
    <TextBlock Text="{Binding Path=TaskName}" />
    <TextBlock Text="{Binding Path=Description}"/>
    <TextBlock Text="{Binding Path=Priority}"/>
  </StackPanel>
</DataTemplate>


...


</Window.Resources>

现在,您可以将 myTaskTemplate 用作资源,如下面的示例所示:

<ListBox Width="400" Margin="10"
         ItemsSource="{Binding Source={StaticResource myTodoList}}"
         ItemTemplate="{StaticResource myTaskTemplate}"/>

因为 myTaskTemplate 是资源,所以您现在可以在具有采用 DataTemplate 类型的属性的其他控件中使用它。如上所述,对于 ItemsControl 对象(例如 ListBox),它是 ItemTemplate 属性。对于 ContentControl 对象,它是 ContentTemplate 属性。

DataType 属性

DataTemplate 类具有 DataType 属性,该属性非常类似于 Style 类的 TargetType 属性。因此,在上述示例中不需要为 DataTemplate 指定 x:Key,您可以执行以下操作:

<DataTemplate DataType="{x:Type local:Task}">
  <StackPanel>
    <TextBlock Text="{Binding Path=TaskName}" />
    <TextBlock Text="{Binding Path=Description}"/>
    <TextBlock Text="{Binding Path=Priority}"/>
  </StackPanel>
</DataTemplate>

此 DataTemplate 自动应用于所有 Task 对象。请注意,在这种情况下,x:Key 是隐式设置的。因此,如果要为此 DataTemplate 分配一个 x:Key 值,则要重写隐式 x:Key 并且不会自动应用 DataTemplate。

如果要将 ContentControl 绑定到 Task 对象的集合,则 ContentControl 不会自动使用以上 DataTemplate。这是因为在 ContentControl 上绑定需要更多的信息来区分是要绑定到整个集合还是要绑定到单个对象。如果 ContentControl 要跟踪对 ItemsControl 类型的选择,您可以将 ContentControl 绑定的 Path 属性设置为“/”以表示您对当前项感兴趣。有关示例,请参见如何:绑定到集合并基于选择显示信息。否则,需要通过设置 ContentTemplate 属性显式指定 DataTemplate。

DataType 属性在您拥有不同类型数据对象的 CompositeCollection 时尤其有用。有关示例,请参见如何:实现 CompositeCollection。

当前,数据显示了必要的信息,但是还可以显示更多信息。让我们通过添加 Border、Grid 和一些用于描述要显示的数据的 TextBlock 来显示更多信息。

<DataTemplate x:Key="myTaskTemplate">
  <Border Name="border" BorderBrush="Aqua" BorderThickness="1"
          Padding="5" Margin="5">
    <Grid>
      <Grid.RowDefinitions>
        <RowDefinition/>
        <RowDefinition/>
        <RowDefinition/>
      </Grid.RowDefinitions>
      <Grid.ColumnDefinitions>
        <ColumnDefinition />
        <ColumnDefinition />
      </Grid.ColumnDefinitions>
      <TextBlock Grid.Row="0" Grid.Column="0" Text="Task Name:"/>
      <TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding Path=TaskName}" />
      <TextBlock Grid.Row="1" Grid.Column="0" Text="Description:"/>
      <TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding Path=Description}"/>
      <TextBlock Grid.Row="2" Grid.Column="0" Text="Priority:"/>
      <TextBlock Grid.Row="2" Grid.Column="1" Text="{Binding Path=Priority}"/>
    </Grid>
  </Border>


...


</DataTemplate>

下面的屏幕快照使用此已修改的 DataTemplate 来显示 ListBox。

数据模板示例屏幕快照

我们可以在 ListBox 上将 HorizontalContentAlignment 设置为 Stretch 来确保项的宽度占据整个空间:

<ListBox Width="400" Margin="10"
     ItemsSource="{Binding Source={StaticResource myTodoList}}"
     ItemTemplate="{StaticResource myTaskTemplate}" 
     HorizontalContentAlignment="Stretch"/>

HorizontalContentAlignment 属性设置为 Stretch 后,ListBox 现在如下所示:

数据模板示例屏幕快照

使用 DataTrigger 来应用属性值

当前表示不会告诉我们某个 Task 是家庭任务还是办公室任务。记住 Task 对象拥有类型为 TaskType 的 TaskType 属性,该类型是一个枚举,其值可以为 Home 和 Work。

在下面的示例中,DataTrigger 将 border 元素的 BorderBrush 设置为 Yellow(如果 TaskType 属性为 TaskType.Home)。

<DataTemplate x:Key="myTaskTemplate">


...


<DataTemplate.Triggers>
  <DataTrigger Binding="{Binding Path=TaskType}">
    <DataTrigger.Value>
      <local:TaskType>Home</local:TaskType>
    </DataTrigger.Value>
    <Setter TargetName="border" Property="BorderBrush" Value="Yellow"/>
  </DataTrigger>
</DataTemplate.Triggers>


...


</DataTemplate>

应用程序现在如下所示。家庭任务的边界显示为黄色,办公室任务的边界显示为浅绿色。

数据模板示例屏幕快照

在此示例中,DataTrigger 使用 Setter 来设置属性值。触发器类也拥有 EnterActions 和 ExitActions 属性,这些属性允许您开始一组操作,例如动画操作。而且,还有一个 MultiDataTrigger 类,它允许您根据多个数据绑定属性值应用更改。

达到相同效果的另一种方式是将 BorderBrush 属性绑定到 TaskType 属性,然后使用值转换器根据 TaskType 值来返回颜色。有关类似示例,请参见如何:改变 ListView 中各行的背景色。就性能而言,使用转换器创建上述效果的效率要高一点。另外,创建自己的转换器使您可以获得更多的灵活性,因为您提供的是自己的逻辑。最后,您选择的技术取决于您当时的具体情况和您的偏好。有关如何编写转换器的信息,请参见 IValueConverter。

DataTemplate 中有哪些内容?

在前面的示例中,我们使用 DataTemplate.Triggers 属性将触发器放入 DataTemplate 中。触发器的 Setter 设置 DataTemplate 中元素(Border 元素)的属性值。但是,如果您的 Setters 相关属性不是当前 DataTemplate 中元素的属性,则使用 Style(用于 ListBoxItem 类)设置属性更合适(如果您要绑定的控件是 ListBox)。例如,如果您想要在鼠标指向某一项时让您的 Trigger 对该项的 Opacity 值进行动画处理,则需要在 ListBoxItem 样式中定义触发器。有关示例,请参见介绍样式设置和模板化的示例。

通常需要注意:DataTemplate 会应用于每个生成的 ListBoxItem(有关它实际应用的方式和场合的更多信息,请参见 ItemTemplate 页)。DataTemplate 仅与数据对象的表示和外观有关。在大多数情况下,所有其他表示方面(例如,项在被选中时的外观或 ListBox 排列项的方式)不在 DataTemplate 定义范围内。有关示例,请参见对 ItemsControl 进行样式和模板处理一节。

在 DataType 属性一节中,我们讨论了您可以针对不同的数据对象定义不同的数据模板。这在您拥有不同类型的 CompositeCollection 或不同类型的项集合时尤其有用。在使用 DataTrigger 来应用属性值一节中,我们演示了如果您拥有相同类型的数据对象集合,您可以创建 DataTemplate,然后根据每个数据对象的属性值使用触发器来应用更改。虽然触发器允许您应用属性值或启动动画,但是它们无法让您灵活重构数据对象的结构。在某些情况下,可能需要您为类型相同但属性不同的数据对象创建其他 DataTemplate。

例如,当 Task 对象的 Priority 值为 1 时,您可能需要为它指定完全不同的外观,以给予您自己一个提醒。在这种情况下,您需要创建 DataTemplate 来显示高优先级的 Task 对象。让我们将以下 DataTemplate 添加到资源部分:

<DataTemplate x:Key="importantTaskTemplate">
  <DataTemplate.Resources>
    <Style TargetType="TextBlock">
      <Setter Property="FontSize" Value="20"/>
    </Style>
  </DataTemplate.Resources>
  <Border Name="border" BorderBrush="Red" BorderThickness="1"
          Padding="5" Margin="5">
    <DockPanel HorizontalAlignment="Center">
      <TextBlock Text="{Binding Path=Description}" />
      <TextBlock>!</TextBlock>
    </DockPanel>
  </Border>
</DataTemplate>

请注意,此示例使用 DataTemplate.Resources 属性。DataTemplate 中的元素共享该部分中定义的资源。

若要提供逻辑以根据数据对象的 Priority 值选择要使用的 DataTemplate,需要创建 DataTemplateSelector 的子类并重写 SelectTemplate 方法。在下面的示例中,SelectTemplate 方法提供逻辑以根据 Priority 属性的值返回适当的模板。可以在封装 Window 元素的资源中找到要返回的模板。

using System.Windows;
using System.Windows.Controls;

namespace SDKSample
{
    public class TaskListDataTemplateSelector : DataTemplateSelector
    {
        public override DataTemplate
            SelectTemplate(object item, DependencyObject container)
        {
            if (item != null && item is Task)
            {
                Task taskitem = item as Task;
                Window window = Application.Current.MainWindow;

                if (taskitem.Priority == 1)
                    return
                        window.FindResource("importantTaskTemplate") as DataTemplate;
                else
                    return
                        window.FindResource("myTaskTemplate") as DataTemplate;
            }

            return null;
        }
    }
}

然后,我们可以将 TaskListDataTemplateSelector 声明为资源:

<Window.Resources>


...


<local:TaskListDataTemplateSelector x:Key="myDataTemplateSelector"/>


...


</Window.Resources>

若要使用模板选择器资源,请将其分配到 ListBox 的 ItemTemplateSelector 属性。ListBox 为基础集合中的每一项调用 TaskListDataTemplateSelector 的 SelectTemplate 方法。该调用会将数据对象作为项参数来传递。然后,将由该方法返回的 DataTemplate 应用于该数据对象。

<ListBox Width="400" Margin="10"
         ItemsSource="{Binding Source={StaticResource myTodoList}}"
         ItemTemplateSelector="{StaticResource myDataTemplateSelector}"
         HorizontalContentAlignment="Stretch"/>

使用模板选择器后,ListBox 现在如下所示:

数据模板示例屏幕快照

这正是此示例要得到的结果。有关完整示例,请参见数据模板化示例简介。

即使 ItemsControl 不是 DataTemplate 所用于的唯一控件类型,将 ItemsControl 绑定到集合仍然很常见。在 DataTemplate 中有哪些内容一节中,我们讨论了您的 DataTemplate 定义应当仅与数据表示相关。为了明确何时不适合使用 DataTemplate,有必要了解 ItemsControl 提供的不同样式和模板属性。下面的示例旨在演示这些属性中每一个属性的功能。本示例中的 ItemsControl 绑定到与前面示例中的 Tasks 集合。为便于演示,本示例中的样式和模板都进行了内联声明。

<ItemsControl Margin="10"
              ItemsSource="{Binding Source={StaticResource myTodoList}}">
  <!--The ItemsControl has no default visual appearance.
      Use the Template property to specify a ControlTemplate to define
      the appearance of an ItemsControl. The ItemsPresenter uses the specified
      ItemsPanelTemplate (see below) to layout the items. If an
      ItemsPanelTemplate is not specified, the default is used. (For ItemsControl,
      the default is an ItemsPanelTemplate that specifies a StackPanel.-->
  <ItemsControl.Template>
    <ControlTemplate TargetType="ItemsControl">
      <Border BorderBrush="Aqua" BorderThickness="1" CornerRadius="15">
        <ItemsPresenter/>
      </Border>
    </ControlTemplate>
  </ItemsControl.Template>
  <!--Use the ItemsPanel property to specify an ItemsPanelTemplate
      that defines the panel that is used to hold the generated items.
      In other words, use this property if you want to affect
      how the items are laid out.-->
  <ItemsControl.ItemsPanel>
    <ItemsPanelTemplate>
      <WrapPanel />
    </ItemsPanelTemplate>
  </ItemsControl.ItemsPanel>
  <!--Use the ItemTemplate to set a DataTemplate to define
      the visualization of the data objects. This DataTemplate
      specifies that each data object appears with the Proriity
      and TaskName on top of a silver ellipse.-->
  <ItemsControl.ItemTemplate>
    <DataTemplate>
      <DataTemplate.Resources>
        <Style TargetType="TextBlock">
          <Setter Property="FontSize" Value="18"/>
          <Setter Property="HorizontalAlignment" Value="Center"/>
        </Style>
      </DataTemplate.Resources>
      <Grid>
        <Ellipse Fill="Silver"/>
        <StackPanel>
          <TextBlock Margin="3,3,3,0"
                     Text="{Binding Path=Priority}"/>
          <TextBlock Margin="3,0,3,7"
                     Text="{Binding Path=TaskName}"/>
        </StackPanel>
      </Grid>
    </DataTemplate>
  </ItemsControl.ItemTemplate>
  <!--Use the ItemContainerStyle property to specify the appearance
      of the element that contains the data. This ItemContainerStyle
      gives each item container a margin and a width. There is also
      a trigger that sets a tooltip that shows the description of
      the data object when the mouse hovers over the item container.-->
  <ItemsControl.ItemContainerStyle>
    <Style>
      <Setter Property="Control.Width" Value="100"/>
      <Setter Property="Control.Margin" Value="5"/>
      <Style.Triggers>
        <Trigger Property="Control.IsMouseOver" Value="True">
          <Setter Property="Control.ToolTip"
                  Value="{Binding RelativeSource={x:Static RelativeSource.Self},
                          Path=Content.Description}"/>
        </Trigger>
      </Style.Triggers>
    </Style>
  </ItemsControl.ItemContainerStyle>
</ItemsControl>

下面是该示例在呈现时的屏幕快照:

ItemsControl 示例屏幕快照

请注意,您可以使用 ItemTemplateSelector,而不是 ItemTemplate。请参考上一节的示例。同样,可以选择使用 ItemContainerStyleSelector,而不是 ItemContainerStyle。

这里未显示 ItemsControl 的其他两个与样式相关的属性,它们是 GroupStyle 和 GroupStyleSelector。

到目前为止,我们仅讨论如何绑定和显示单个集合。某些时候,您要绑定的集合包含其他集合。HierarchicalDataTemplate 类专用于 HeaderedItemsControl 类型以显示这样的数据。在下面的示例中,ListLeagueList 是 League 对象的列表。每个 League 对象都有一个 Name 和 Division 对象的集合。每个 Division 都有一个 Name 和 Team 对象的集合,并且每个 Team 对象都有一个 Name。

<Window x:Class="SDKSample.Window1"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  Title="HierarchicalDataTemplate Sample"
  xmlns:src="clr-namespace:SDKSample">
  <DockPanel>
    <DockPanel.Resources>
      <src:ListLeagueList x:Key="MyList"/>

      <HierarchicalDataTemplate DataType    = "{x:Type src:League}"
                                ItemsSource = "{Binding Path=Divisions}">
        <TextBlock Text="{Binding Path=Name}"/>
      </HierarchicalDataTemplate>

      <HierarchicalDataTemplate DataType    = "{x:Type src:Division}"
                                ItemsSource = "{Binding Path=Teams}">
        <TextBlock Text="{Binding Path=Name}"/>
      </HierarchicalDataTemplate>

      <DataTemplate DataType="{x:Type src:Team}">
        <TextBlock Text="{Binding Path=Name}"/>
      </DataTemplate>
    </DockPanel.Resources>

    <Menu Name="menu1" DockPanel.Dock="Top" Margin="10,10,10,10">
        <MenuItem Header="My Soccer Leagues"
                  ItemsSource="{Binding Source={StaticResource MyList}}" />
    </Menu>

    <TreeView>
      <TreeViewItem ItemsSource="{Binding Source={StaticResource MyList}}" Header="My Soccer Leagues" />
    </TreeView>

  </DockPanel>
</Window>

该示例演示通过使用 HierarchicalDataTemplate,您可以轻松地显示包含其他列表的列表数据。下面是该示例的一个屏幕快照。

HierarchicalDataTemplate 示例屏幕快照

有关完整示例,请参见 显示分层数据的示例。

云原生监控:Prometheus+Grafana监控Nginx实战 在云原生环境中,应用的高可用性和性能优化至关重要。Nginx作为一款广泛使用的高性能Web服务器、反向代理服务器及电子邮件(IMAP/POP3)代理服务器,对其进行有效的监控能够及时发现潜在问题,保障服务的稳定运行。本文章的目的是详细介绍如何使用Prometheus和Grafana构建一套完整的监控系统来监控Nginx,范围涵盖从环境搭建、数据采集、存储到可视化展示的整个流程。 阅读详情

相关推荐

基于大模型的围术期谵妄防控系统研究报告

围术期谵妄是一种急性脑功能障碍综合征,通常发生在手术前后一段时间内。患者会出现意识障碍、注意力不集中、认知功能紊乱、睡眠 - 觉醒周期失调等症状,严重者甚至会出现幻觉、妄想和攻击行为 。这种病症不仅会给患者自身带来极大的痛苦,还会对其术后康复产生严重的负面影响。从患者角度来看,围术期谵妄会显著延长患者的住院时间,增加患者的医疗费用负担。有研究表明,发生谵妄的患者住院时间平均比未发生者延长 2 - 3 天。长时间的住院不仅会影响患者的生活质量,还可能导致患者错过最佳的康复时机,影响身体机能的恢复。同时,谵妄还

嵌入式毕设/课设资料清单(速查手册·文档模板·题库,持续更新)→ 见最新文章 1071

C++驱动Word自动化:COM接口实战与模板化文档生成

文档自动化是企业级应用开发中的核心需求,尤其在数据报表生成和批量文档处理场景下。其原理是通过程序化接口操控办公软件,实现数据与样式的自动融合,从而提升效率并减少人工错误。在技术选型上,对于性能敏感或已有庞大C++代码基的系统,直接使用C++操作Word成为务实选择,这需要深入理解COM(组件对象模型)技术。COM作为微软的组件对象模型,充当了C++与Word之间的桥梁,允许开发者通过暴露的接口精准操控Word对象模型。其技术价值在于能无缝集成到现有C++架构,避免引入额外语言运行时,同时提供底层控制力以满足

weixin_34187862的博客 374

蓝桥杯STM32G431RBT6学习——GPIO

蓝桥杯STM32G431RBT6学习——GPIO

weixin_44098974的博客 2233

数据访问的模板化

数据访问的模板化        大多数人都有乘飞机旅行的经历,都会明白旅行中最重要的组成部分之一是把行李从A点运输到B点。这个过程包含多个步骤。当我们到达机场时,首先要做的是在柜台登记行李,然后安检会对其进行扫描以确保安全,之后行李会通过行李车转移到飞机上。如果需要中途转机,行李也会有同样的旅程。在到达目的地时,行李会被从飞机上取下来,放到行李传送带上,最后由旅客在取行李处把它取走。    

高飞 387

第八篇 永磁同步电机控制-MTPA、MTPV

MTPA 的全称是 Maximum Torque Per Ampere,即 最大转矩电流比控制。核心思想:在输出特定转矩时,通过控制定子电流的幅值和相位(即d轴和q轴电流的分量),使得所需要的定子电流幅值最小。通俗理解:就是用“最省电”的方式产生所需要的力矩。就像开车时,找到一个最合适的油门和档位配合,使得在输出相同动力时,油耗最低。

深耕汽车电子:AUTOSAR、电机控制,助力数字汽车 1868

数据分析案例-对某宝用户评论做情感分析

目录 原始数据 绘制词云图 情感分析 原始数据 原始数据为某宝一商品的用户评论数据 绘制词云图 # coding=utf-8 import jieba import re import wordcloud import imageio # 打开需要分析词频的文本 with open('淘宝评论3.0.txt', encoding='utf-8') as f: data = f.read() # 文本预处理 :去除一些无用的字符只提取出中文出来 new_data

m0_64336780的博客 1万+

WPF中的数据模板(DataTemplate)

                                                                                  WPF中的数据模板(DataTemplate)                                                                                               ...

weixin_34144450的博客 401

基于YOLOv10的机器人抓取引导系统:从物体检测到精准抓取

python# 数据标注工具简化版import os"""启动标注工具""""""标注单张图像"""print(f"标注图像: {os.path.basename(img_path)}")print("请在图像上绘制抓取矩形框...")# 这里应该实现交互式标注界面# 简化版本直接返回示例标注# 示例标注数据"""保存标注结果"""# 保存为YOLO格式# 转换为YOLO格式。

YOLO 377

WPF Treeview 学习 增加图标、checkbox和右键菜单(转载)

最近在学习wpf,习惯把自己学习的东西记下来。   刚开始接触的这个控件,有点不知道怎么用。网上看了下,好像大家都觉得不如winform里面的好使。反正,我以前是用mfc做界面的,对c#不熟。网上看了几个例子,自己动手做了一下,现在把大概步骤记录下来。我这里比较简单,没有用什么模式。网上有一篇《使用ViewModel模式来简化WPF的TreeView》大家可以看看。   一、一个简单的树  ...

weixin_30549657的博客 758

ABAP Cloud 开发教程的文章目录

本教程涵盖 ABAP 云端 Client 处理、多租户架构、ABAP Cloud开发、动态编程优化、SQL语法改进等技术主题。最新版本1.0.0(更新至2025-12-12),包含197篇文章,重点文章包括《ABAP Client Handling与隔离机制》《ABAP Platform 2021泛型编程》《SAP BTP ABAP多租户应用开发》等,为开发者提供从基础到进阶的实战指南。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1797

构建具有预测维护能力的AI Agent

随着工业4.0的推进,工业设备的复杂性和自动化程度不断提高,设备的稳定运行对于企业的生产效率和经济效益至关重要。预测维护作为一种先进的设备维护策略,能够通过对设备状态的实时监测和分析,提前预测设备故障,从而避免设备意外停机,降低维护成本。本文的目的是详细阐述如何构建具有预测维护能力的AI Agent,涵盖从数据采集、处理、模型训练到实际应用的整个流程,为企业和开发者提供全面的技术指导。本文将按照以下结构进行组织:首先介绍核心概念与联系,包括预测维护和AI Agent的基本原理和架构;

2501_92132293的博客 943

自定义的模板化数据结构(1)

自定义的模板化数据结构简介自引用类链表 简介 链表 “排列在一行”的数据项的集合——在链表中的任何一个数据项上都可以进行插入和删除操作 堆栈(区分数据结构中的堆栈与存储结构中的堆和栈) 是编译器和操作系统中重要的数据结构:元素的插入和删除只能在堆栈的一端——栈顶进行。 队列 插入操作在队尾进行,删除操作在队列头进行,FIFO。 二叉树 便于数据搜索和排序,去重,以及把表达式编译为机器语言。 如果可以,始终倾向于标准库的容器、迭代器和算法。 自引用类 一个自引用类包含一个指向与它同类的对象的指针成员 cl

weixin_44433038的博客 380

uni-app:实现APP设置手机闹钟+取消闹钟+响铃重复/文字等,帮用户设置好闹钟并备注文本,uni-app设置安卓系统闹钟和苹果ios系统闹钟(uniapp调用手机上的闹钟,详细示例代码demo)

uniapp设置安卓和iOS闹钟的插件,uni-app设置安卓系统闹钟,uniapp设置苹果ios系统闹钟,uniapp设置定时闹铃的完整解决方案,UniApp设置手机闹钟,uniApp如何设置手机闹铃,uniapp设置闹钟,设置闹钟提醒,uni-app设置安卓系统闹钟_通过uniapp设置原声闹钟,调用android系统闹钟,如何在App中启动系统闹钟,uniapp如何取消闹钟,通过调用ios的原生接口来设置手机闹钟,uni-app 调用手机闹钟功能,uniap调用ios系统闹钟,uniapp调用手机上的

✅ 精选推荐文章 4233

数据绑定概述(MSDN)

数据绑定概述 .NET Framework 3.5 其他版本 更新: 2008 年 7 月 Windows Presentation Foundation (WPF) _数据绑定为应用程序提供了一种简单、一致的数据表示和交互方法。元素能够以 公共语言运行时 (CLR) 对象和 XML 形式绑定到来自各种数据源的数据。Co...

weixin_30600197的博客 271

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

数据绑定概述---MSDN

 Windows Presentation Foundation数据绑定概述<!-- Content type: Devdiv1. Transform: orcas2mtps.xslt. -->更新: 2008 年 7 月 Windows Presentation Foundation (WPF) _数据绑定为应用程序提供了一种简单、一致的数

wmjcom的专栏 2011

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

处理继承的事件

处理继承的事件要处理继承的事件,应重写从基类继承的受保护的 OnEventName方法,而不是附加委托.一般情况下,重写的方法应调用基类的 OnEventName 方法,从而确保调用附加到事件的委托(除非不想调用这些委托).MSDN模板化控件示例代码片断,说明模板化控件如何处理继承的DataBinding事件,以确保在调用数据绑定事件处理程序之前先创建子控件.protected override 

MasterLRC的专栏 1612

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

比MSDN快10倍:AI技术文档生成方案对比

的智能生成功能,只需输入基础接口描述(如方法类型、路径、参数名),系统就能自动补全完整的文档框架。最惊艳的是,它能根据参数类型智能生成符合业务逻辑的示例数据,比如当参数定义为"userRole"时,会自动填充"admin"/"guest"等合理枚举值。的"所见即所得"特性。在尝试生成数据库设计文档时同样有效——输入表结构DDL语句后,平台能自动产出包含字段说明、索引建议甚至ER图的完整文档,耗时从原来的小时级缩短到分钟级。数据表明,在参数说明和示例生成这两个最耗时的环节,AI效率提升分别达到8倍和35倍。

BlackironPanther23的博客 267

编写 T4 文本模板(MSDN)收集

编写 T4 文本模板 Visual Studio 2010 其他版本 Visual Studio 2008 更新:2011 年 3 月 文本模板包含将从其生成的文本。 例如,用于创建网页的模板包含“…”和 HTML 页的所有其他标准部件。 插入模板中的是控制块,控制块是程序代码片断。 控制块提供变化值,允许

蓝叶菱的专栏 1321

微软发布ASP.NET MVC 2预览版 多项功能更新

ASP.NET MVC是既ASP.NET WebForms之后,微软推出的Front Controller式的Web开发模型,它弥补了前者对HTML控制能力不足,单元测试较为困难等缺点。更重要的是,ASP.NET MVC基于MS-PL发布,是一个真正的开源框架——且没有任何平台限制,也就是说,您可以在mono下使用或开发ASP.NET MVC的相关项目。 其实微软在今年3月的MIX大会上发布AS...

weixin_34067980的博客 86

CodeDom系列目录

<br />      CodeDOM 提供了表示许多常见的源代码元素类型的类型。您可以设计一个生成源代码模型的程序,使用 CodeDOM 元素 <br />构成一个对象图。可以使用受支持的编程语言的 CodeDOM 代码生成器,将该对象图呈现为源代码。CodeDOM 也可以用于将 <br />源代码编译成二进制程序集。 <br />CodeDOM 的一些一般用途包括: <br />模板化代码生成:生成 ASP.NET、XML Web 服务客户端代理、代码向导、设计器或其他代码发出机制的代码。<br />动

379

[Silverlight学习笔记]关于Silverlight的Template(待续)

总结一下N种Template: 1、ControlTemplate:ControlTemplate是控件模板,其定义如下: /** System.Windows.Controls 的成员 摘要: 定义作为控件模板应用的元素树。 **/ public sealed class ControlTemplate : System.Windows.FrameworkTempla...

aide1228的博客 181

关于SmartGrab

08年年底,和朋友开始一个做一个事情,需要在网络上搜索一些信息,现有的软件基本都不能满足我们的需求。于是就开始了新的软件项目,Smartgrab。Smartgrab要解决的问题是,网络信息搜索的简易和便利性,量能保证搜索准确,并...

73

总结一下N种Template:

<br />1、ControlTemplate:ControlTemplate是控件模板,其定义如下:<br />/** System.Windows.Controls 的成员 摘要: 定义作为控件模板应用的元素树。 **/ public sealed class ControlTemplate : System.Windows.FrameworkTemplate {...} <br />MSDN官方描述如下:<br />/** ControlTemplate 允许您指定控件的可视结构。 控件

408
上一篇: 数据绑定概述---MSDN
下一篇: Really cool effects in WPF
wmjcom
博客等级 码龄24年 71粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值