WPF 模板(Template)(1),厉害了

Style中的Setter
Setter,属性值的设置器,给属性赋值的时候一般都采用“属性名=属性值”的形式。Setter类的Property属性用来指明想为目标的哪个属性赋值;Setter类的Value属性则是提供的属性值。

Style中的Trigger
Trigger,触发器,即当某些条件满足时会触发一个行为(比如某些值的变化或动画的发生等),主要类型有:

  • 事件触发型的EventTrigger
  • 数据变化触发型的Trigger/DataTrigger
  • 多条件触发型的MultiTrigger/MultiDataTrigger

Trigger类是最基本的触发器。类似于Setter,Trigger也有Property和Value这两个属性,Property是Trigger 关注的属性名称,Value是触发条件。
Trigger类还有一个Setters属性,此属性值是一组Setter,一旦触发条件被满足,这组Setter的“属性一值”就会被应用,触发条件不再满足后,各属性值会被还原。
一个针对CheckBox的Style,当CheckBox的IsChecked属性为true的时候前景色和字体会改变。XAML代码如下:


<Window.Resources>

</Window.Resources>






MultiTrigger必须多个条件同时成立时才会被触发,比Trigger多了一个Conditions属性,需要同时成立的条件就存储在这个集合中。改动上面的例子,要求同时满足CheckBox被选中且Content为“正如我悄悄的来”时才会被触发,XAML代码如下(仅Style部分):

效果如下:

Template扩展:

很多时候数据是以XML形式存储的,DataTemplate具有直接把XML数据结点当作目标对象的功能——XML数据中的元素名(标签名)可以作为DataType,元素的子结点和Attribute可以使用XPath来访问。下面的代码使用XmlDataProvider作为数据源,代码如下:


<Window.Resources>

显示层级数据的模板HierarchicalDataTemplate
XML最大的优势是可以方便地表示带有层级的数据,WPF准备了TreeView和Menultem控件用来显示层级数据,能够帮助层级控件显示层级数据的模板是HierarchicalDataTemplate。第一个例子是使用TreeView显示多层级、不同类型数据,需要为每种数据设计一个模板,有机会使每种数据类型有自己独特的外观。数据保存在项目根目录的Data.xml文件中,内容如下:

<?xml version="1.0" encoding="utf-8" ?>

程序的XAML代码如下:


<Window.Resources>

效果如下:

第二个例子是同一种数据类型的嵌套结构,这种情况下只需设计一个HierarchicalDataTemplate,它会产生自动迭代应用的效果。数据仍然存放在Data.xml文件中,数据全都是Operation类型:

<?xml version="1.0" encoding="utf-8" ?>

程序的XAML代码如下:


<Window.Resources>

HierarchicalDataTemplate的作用目标是Menultem的Header,可以从被单击Menultem的Header中取出XML数据。事件处理器代码如下:

private void StackPanel_Click(object sender, RoutedEventArgs e)
{
MenuItem mi = e.OriginalSource as MenuItem;
XmlElement xe = mi.Header as XmlElement;
MessageBox.Show(xe.Attributes[“Name”].Value);
}

效果如下:

Note:可以维护一个CommandHelper类,根据拿到的数据来决定执行什么RoutedCommand。

从外界访问Template内部的控件及其属性值
由ControlTemplate或DataTemplate生成的控件都是“由Template生成的控件”,ControlTemplate和DataTemplate两个类均派生自FrameworkTemplate类,有个名为FindName的方法可以检索其内部控件。
检索ControlTemplate生成的控件
设计一个ControlTemplate并把它应用在一个UserControl上,界面上还有一个Button,在它的Click事件处理器中检索由ControlTemplate生成的代码。
程序的XAML代码如下:


<Window.Resources>







</Window.Resources>




后台代码如下:

private void Button_Click(object sender, RoutedEventArgs e)
{
TextBox tb = this.uc.Template.FindName(“textBox1”, this.uc) as TextBox;
tb.Text = “Hello WPF”;
StackPanel sp = tb.Parent as StackPanel;
(sp.Children[1] as TextBox).Text = “Hello ControlTemplate,I can find you!”;
}

Trigger扩展:

由数据触发的DataTrigger
基于数据执行某些判断可以考虑使用DataTrigger,DataTrigger对象的Binding属性会把数据源源不断送过来,一旦送来的值与Value属性一致DataTrigger即被触发。
下面例子中,当TextBox的Text长度小于7个字符时其Border会保持红色,XAML代码如下:


<Window.Resources>
<local:L2BConverter x:Key=“cvtr”/>

</Window.Resources>





为了将控件自己作为数据源需要使用RelativeSource,如果不明确指出Source时Binding会把控件的DataContext属性当作数据源而非把控件自身当作数据源。
Binding的Path被设置为Text.Length,字符串的长度是一个具体的数字,基于这个长度值做判断时需要用到Converter,创建如下的Converter:

//经Converter转换后,长度值会转换成bool类型值,DataTrigger的Value被设置为false。
public class L2BConverter : IValueConverter
{

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数大数据工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年大数据全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上大数据开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注大数据获取)
img

l1-1712539699074)]
[外链图片转存中…(img-qlFdlUqL-1712539699074)]
[外链图片转存中…(img-pbGnznxs-1712539699074)]
[外链图片转存中…(img-2e25JOWi-1712539699075)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上大数据开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注大数据获取)
[外链图片转存中…(img-pNXAaA7k-1712539699075)]

  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: WPF(Windows Presentation Foundation)是一种用于构建Windows应用程序的技术,而UI template是一种在WPF中用于创建可重复使用的用户界面样式和布局的机制。 WPF的UI template可以理解为一种定义了界面元素外观和样式的模板。通过使用UI template,我们可以很方便地将相同的界面元素样式应用于多个控件,从而实现界面的一致性和可重用性。 使用UI template的好处之一是简化了界面开发工作。开发人员只需要定义一次UI模板,然后可以在需要的地方直接应用这个模板,而不需要重新编写和调整样式。这在多个界面元素需要拥有相同外观的情况下特别有用。 另一个好处是提高了界面的灵活性。通过修改UI template,我们可以轻松地调整控件的样式、布局和属性,而不会破坏应用程序的整体结构。这样可以节省大量的时间和工作量,并且可以使界面更容易维护。 在WPF中,UI template是由XAML语言定义的。通过使用XAML,开发人员可以以声明式的方式定义界面元素的外观和样式,而不需要编写繁琐的代码。这使得UI template的创建、修改和管理变得更加方便和直观。 总的来说,WPF的UI template是一种用于创建可重复使用的用户界面样式和布局的机制,它可以简化界面开发工作,提高界面的灵活性,并通过XAML语言实现了对界面的声明式定义。 ### 回答2: WPF(Windows Presentation Foundation)是微软推出的一种用于构建富客户端应用程序的技术。在WPF中,UI模板(UI Template)是一种定义了控件外观和行为的重要组成部分。 UI模板被用于定义控件在界面上的外观,比如控件的背景、边框、字体样式、布局等。通过使用UI模板,我们可以根据应用程序的需求,自定义控件的外观,使之符合我们期望的样式和风格。这种灵活性使得WPF应用程序可以呈现出各种独特的界面设计。 UI模板的创建主要分为两个步骤:定义模板和应用模板。首先,我们需要根据需要定义一个模板,可以使用XAML(eXtensible Application Markup Language)来描述模板的结构和样式。模板中可以包含多个可视元素和控件,并可以使用各种布局控件进行排列。其次,我们需要将定义好的模板应用到相应的控件上。在WPF中,通过将控件的Template属性设置为我们定义的模板,就可以使控件采用我们自定义的样式。 使用UI模板可以为应用程序带来很多好处。首先,它使得应用程序的界面设计能够与众不同,使其与其他应用程序区别开来,提供独特的用户体验。其次,UI模板的灵活性使得我们可以方便地修改和调整控件的外观,而无需改变控件的内部逻辑。这种分离了界面与逻辑的设计思想有助于增强应用程序的可维护性和可扩展性。 总之,WPF的UI模板是一种非常强大的工具,可以帮助开发者定制出各种独特且具有个性化的界面,从而提升应用程序的用户体验。 ### 回答3: WPF (Windows Presentation Foundation)是一种用于创建丰富而功能强大的Windows桌面应用程序的框架。在WPF中,UI模板是一种用于定义UI元素外观和行为的技术。 UI模板是一种XAML标记语言的结构,它描述了如何渲染和布局一个UI元素,从而决定了它的外观和行为。UI模板可以用于自定义各种控件,例如按钮、文本框、列表和窗体等。通过创建和应用UI模板,开发者可以完全控制和定制应用程序的外观和交互方式。 WPF的UI模板由多个元素组成,其中包括容器元素、面板元素、控件元素和视觉元素等。容器元素用于包含和布局其他元素,面板元素用于定义元素的排列方式,控件元素用于添加交互和功能,视觉元素用于定义元素的外观。 开发者可以使用Visual Studio等工具创建和编辑UI模板。在模板中,可以通过修改元素的属性、样式和模板绑定来改变元素的外观和行为。还可以通过添加触发器和动画等功能来实现交互效果。 通过使用UI模板,开发者可以根据自己的需求和设计要求来定制应用程序的外观。他们可以创建独特和个性化的用户界面,从而提供更好的用户体验。此外,UI模板还可以被多个控件共享,以实现统一的外观和风格。 总之,WPF的UI模板是一种强大的工具,可以让开发者自由定制和控制应用程序的外观和行为。通过使用UI模板,可以创建独特和个性化的用户界面,为用户提供更好的体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值