首页 > 其他分享 >WPF常见控件(包含materialDesign)与属性

WPF常见控件(包含materialDesign)与属性

时间:2024-07-07 16:52:21浏览次数:19  
标签:控件 TemplateBinding 绑定 materialDesign ControlTemplate WPF DataTemplate 属性

materialDesign:ColorZone: 用于在应用界面中创建有色区域,增加层级感和视觉吸引力。
materialDesign:DrawerHost:用于实现从屏幕一侧滑出的抽屉控件,经常与materialDesign:DrawerHost.LeftDrawerContent配套使用(这里的例子是设置左抽屉)。
DockPanel:布局控件,用于将其子元素排列在特定的方向上(顶部、底部、左侧、右侧或填充其余空间)。
StackPanel:堆叠控价(上下、左右)。
ToggleButton:用于表示一个按钮,它可以在两种状态之间切换(选中和未选中)。ToggleButton 是常规 Button 的扩展,它的 IsChecked 属性表示当前选中状态。
ListBox:显示列表数据,经常绑定数据上下文列表类型的数据。ListBox.ItemTemplate:用于定义每个项应该如何显示。ListBox.ItemsPanel:定义了列表中的项是如何布局的。
TextBlock:TextBlock 是一个用于显示文本的控件,TextBlock 是只读的。
TextBox:TextBox是一个用于显示文本的控件,TextBox可用于接受用户输入。
Grid:布局控件。
Border:用于在其子控件(只能有一个子元素)周围创建一个边框。Border 控件不仅可以设置边框的颜色、厚度和圆角,还可以设置背景颜色。这使得它成为一个非常有用的布局工具,用来增强视觉效果或分隔 UI 元素。
Canvas:根据绝对坐标定位子元素。

AllowsTransparency="True": 使得这个窗口可以有透明的效果并且没有传统的窗口边框。
WindowStyle="None": 这个属性定义了窗口边框的样式。设置为 None 表示窗口将没有标题栏和边框。经常与AllowsTransparency="True"配套使用,实现真正的无边框无内容窗口,假如WindowStyle="None"单独使用,生成的窗口上面还是有一条白色的线条。
WindowStartupLocation="CenterScreen": 设置窗口居中
HorizontalAlignment="Center":水平居中
VerticalAlignment="Center":垂直居中

TemplateBinding和Binding

TemplateBinding

TemplateBinding 是一种简化版的数据绑定,通常用于 ControlTemplate 内部。TemplateBinding 是一种优化的、高性能的绑定方式,但是它具有一定的限制。它只能用于父控件的属性和它在控件模板内部的子元素之间的绑定,并且是单向的从父控件到子元素。

<ControlTemplate TargetType="Button">
    <Border Background="{TemplateBinding Background}">
        <!-- ... -->
    </Border>
</ControlTemplate>

在这个例子中,Border 控件的 Background 属性通过 TemplateBinding 绑定到它所在模板的目标 Button 控件的 Background 属性。这意味着当按钮的背景改变时,模板中对应的边框背景也会改变。

Binding

Binding 是一种更通用、功能更为强大的绑定机制。它允许从任何类型的数据源绑定到任意属性,并且支持双向绑定、转换器、路径导航、数据源更新触发器等高级功能。

<TextBox Text="{Binding Path=UserName, UpdateSourceTrigger=PropertyChanged}" />

在这个例子中,TextBox 控件的 Text 属性与绑定上下文(例如视图模型)中的 UserName 属性相关联。当用户输入时,UserName 属性会随之更新,反之亦然。

总结

  • 当你需要在控件模板中快速绑定到拥有该模板的控件的属性,并且不需要高级绑定功能时,使用 TemplateBinding
  • 当你需要从各种数据源进行绑定、需要使用数据转换或者需要数据绑定的更丰富特性时,使用 Binding

注意

TemplateBinding 只能在 ControlTemplateDataTemplate 中使用,而 Binding 可以在模板内外使用,是一个更通用的绑定手段。

ControlTemplate(一般在定义样式中使用)和DataTemplate(一般在ItemTemplate中使用):

DataTemplate(一般在ItemTemplate中使用):

  • DataTemplate用于定义如何显示数据对象当你绑定一个数据对象到某个控件时,DataTemplate决定了这个对象应该如何呈现在UI中。
  • 通常,DataTemplate用在像ListBoxListViewItemsControl这样的项控件中。这样,每当集合中有新项时,DataTemplate就会被应用到这些新的数据项上。
  • 你可以使用DataTemplate来定义一组控件,比如TextBlock, Button等,来展示绑定数据的不同属性。

例子: 自定义显示人员信息的DataTemplate

<ListBox x:Name="PeopleListBox">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="{Binding Name}" FontWeight="Bold" />
                <TextBlock Text=" (" />
                <TextBlock Text="{Binding Age}" Foreground="Blue" />
                <TextBlock Text=" years old)" />
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

在这个例子中,ListBox中的每个列表项都由一个StackPanel表示,其中展示了人员的姓名(Name)和年龄(Age),数据来自于绑定到ListBox的数据源。

ControlTemplate:

  • ControlTemplate定义了一个控件的整个视觉外观和行为。通过使用ControlTemplate,你可以彻底改变控件的外观,而不用改变它的功能
  • ControlTemplate可提供对控件的细粒度控制,甚至可以重新定义控件的结构。
  • ControlTemplate通常用于自定义标准WPF控件的外观,如ButtonCheckBoxSlider等。

例子: 自定义按钮的ControlTemplate

<Button Content="Click me">
    <Button.Template>
        <ControlTemplate TargetType="Button">
            <Border Background="SkyBlue" CornerRadius="5">
                <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
            </Border>
        </ControlTemplate>
    </Button.Template>
</Button>

在这个例子中,按钮的外观被自定义为带有圆角和天蓝色背景的样式,而按钮的基本功能和行为(如点击响应)保持不变。

结论

  • ControlTemplate 更多关注于控件本身的结构和外观,允许开发者重构整个控件的布局和样式。
  • DataTemplate 关注于数据的具体呈现方式,通常用于列表等集合控件中,定义集合内每个项的展示模板。

以上两者可以组合使用,实现复杂和高度自定义的UI表现。

标签:控件,TemplateBinding,绑定,materialDesign,ControlTemplate,WPF,DataTemplate,属性
From: https://www.cnblogs.com/le-le-l/p/18288572

相关文章

  • WPF single instance via mutex
    usingSystem;usingSystem.Collections.Generic;usingSystem.Configuration;usingSystem.Data;usingSystem.Diagnostics.Eventing.Reader;usingSystem.Linq;usingSystem.Runtime.InteropServices;usingSystem.Threading;usingSystem.Threading.Tasks;usingS......
  • WPF MenuItem behavior MVVM
    //xaml<ImageGrid.Column="1"ClipToBounds="True"Source="{BindingSelectedItem.ImgUrl,ElementName=lbx}"><Image.ContextMenu><ContextMenu><MenuItemHeader="S......
  • WPF MVVM capture window keyboard
    //xaml<behavior:Interaction.Triggers><behavior:EventTriggerEventName="KeyDown"><behavior:CallMethodActionTargetObject="{Binding}"MethodName="Window_KeyDown"/></beha......
  • QT ui界面中对控件进行布局操作,无法改变内控控件大小
    QSizePolicy想象你有一个装满各种物品(窗口部件)的抽屉。QSizePolicy就像是给抽屉里的每个物品设定的规则,决定当抽屉变大时,每个物品如何变化尺寸。固定(Fixed):就像一个固定大小的盒子,不管抽屉变大还是变小,它总是保持原样。最小(Minimum):这就像一个可以伸缩的袋子,但它不能小于它......
  • Qt提升控件失败的解决办法
    在QtCreator中,通常是可以通过继承已有的类来创建新的子类的。如果您想要将QGraphicsView提升为新建的子类,可以按照以下步骤进行操作:打开QtCreator,并打开您的项目。打开包含QGraphicsView的头文件(例如mainwindow.h)。选择QGraphicsView类的声明,并右键单击该类。在弹......
  • WPF自定义控件与样式-自定义按钮(Button)
    一、前言程序界面上的按钮多种多样,常用的就这几种:普通按钮、图标按钮、文字按钮、图片文字混合按钮。本文章记录了不同样式类型的按钮实现方法。二、固定样式的按钮固定样式的按钮一般在临时使用时或程序的样式比较固定时才会使用,按钮整体样式不需要做大的改动。2.1普通按钮-......
  • WPF Menu实现快捷键操作
    很多小伙伴说,在Menu中,实现单个快捷键操作很简单,怎么实现多个快捷键操作和,组合快捷键呢,今天他来了。上代码和效果图一、Ctrl+Shift+任意子母键实现快捷键组合<Windowx:Class="XH.TemplateLesson.MenuWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xa......
  • WPF DataContext
    后台代码:publicclassStudent{publicintId{get;set;}publicstringName{get;set;}publicintAge{get;set;}} 前台代码:<Windowx:Class="BindingTest.MainWindow"xmlns="http://schem......
  • 学懂C#编程:WPF应用开发系列——WPF之ComboBox控件的详细用法
    WPF(WindowsPresentationFoundation)中的ComboBox控件是一个下拉列表控件,允许用户从一组预定义的选项中选择一个选项。以下是ComboBox控件的详细用法,并附带示例说明。ComboBox的基本用法1.XAML定义:在XAML中定义一个ComboBox控件,并添加一些选项。<Windowx:Class="ComboBox......
  • WPF Performance Suite, Microsoft Windows Performance Toolkit
    Copyfrom https://www.cnblogs.com/lindexi/p/12086719.htmlhttps://learn.microsoft.com/en-us/previous-versions/aa969767(v=vs.110) 1.Downloadurl:  https://download.microsoft.com/download/A/6/A/A6AC035D-DA3F-4F0C-ADA4-37C8E5D34E3D/setup/WinSDKPerformanceT......