首页 > 其他分享 >WPF 相关概念

WPF 相关概念

时间:2024-12-11 12:54:07浏览次数:5  
标签:控件 object 示例 绑定 概念 相关 WPF public 属性


1. 控件模板(ControlTemplate)

  • 定义控件的外观和行为。
  • 与 DataTemplate 的区别在于,ControlTemplate 是用于改变控件(如 Button、TextBox)的呈现,而 DataTemplate 是用于显示数据。
  • 示例:
    <ControlTemplate TargetType="Button">
        <Border Background="LightGray" CornerRadius="5">
            <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
        </Border>
    </ControlTemplate>
    

2. 样式(Style)

  • 定义控件的外观设置,例如字体、颜色、大小等。
  • 支持基于触发器的动态样式(Trigger)。
  • 示例:
    <Style TargetType="Button">
        <Setter Property="Background" Value="Blue"/>
        <Setter Property="Foreground" Value="White"/>
    </Style>
    

3. 绑定(Data Binding)

  • 在 UI 和数据源之间建立连接。
  • 支持单向绑定、双向绑定和一对多绑定。
  • 示例:
    <TextBox Text="{Binding Path=Name, Mode=TwoWay}" />
    

4. 依赖属性(Dependency Property)

  • WPF 的核心机制,用于支持绑定、样式、动画等功能。
  • 比普通属性有更强大的特性,支持属性变更通知和默认值设置。

5. 资源(Resources)

  • 提供可重用的样式、模板、颜色等。
  • 包括静态资源(StaticResource)和动态资源(DynamicResource)。
  • 示例:
    <Window.Resources>
        <SolidColorBrush x:Key="PrimaryBrush" Color="Green" />
    </Window.Resources>
    

6. 触发器(Triggers)

  • 根据特定条件(如属性值、事件)动态改变 UI。
  • 包括属性触发器(PropertyTrigger)、数据触发器(DataTrigger)和事件触发器(EventTrigger)。
  • 示例:
    <Style TargetType="Button">
        <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="True">
                <Setter Property="Background" Value="LightBlue"/>
            </Trigger>
        </Style.Triggers>
    </Style>
    

7. 命令(Command)

  • 用于处理用户交互(如按钮点击)。
  • 可以与 MVVM 模式结合,实现命令绑定。
  • 示例:
    <Button Command="{Binding SaveCommand}" Content="Save" />
    

8. 视觉树(Visual Tree)和逻辑树(Logical Tree)

  • 逻辑树描述控件的层次结构(内容模型)。
  • 视觉树描述实际的渲染结构(包含更低级的视觉元素)。

9. 动画(Animation)

  • 为 UI 元素添加动态效果。
  • 支持时间线、关键帧和依赖属性动画。
  • 示例:
    <Storyboard>
        <DoubleAnimation Storyboard.TargetProperty="Opacity" From="0" To="1" Duration="0:0:1"/>
    </Storyboard>
    

10. 路由事件(Routed Events)

  • 支持事件在控件层次结构中冒泡(Bubble)、隧道(Tunnel)或直接(Direct)处理。
  • 示例:Button 的 Click 事件冒泡到父级。

11. 绑定转换器(Value Converter)

  • 用于在绑定过程中对数据进行转换。
  • 示例:
    public class BoolToVisibilityConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return (bool)value ? Visibility.Visible : Visibility.Collapsed;
        }
        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) => throw new NotImplementedException();
    }
    

12. 行为(Behaviors)和触发器(Interactivity)

  • 借助 Microsoft.Xaml.Behaviors.Wpf 库,可以添加附加行为。
  • 常用于 MVVM 模式下为控件添加自定义功能。

13. 附加属性(Attached Property)

  • 一种特殊的依赖属性,允许为不拥有该属性的控件添加额外功能。
  • 示例:
    public static class GridExtensions
    {
        public static readonly DependencyProperty RowSpanProperty = DependencyProperty.RegisterAttached(
            "RowSpan", typeof(int), typeof(GridExtensions), new PropertyMetadata(1));
        public static void SetRowSpan(UIElement element, int value) => element.SetValue(RowSpanProperty, value);
        public static int GetRowSpan(UIElement element) => (int)element.GetValue(RowSpanProperty);
    }
    

数据模板

数据模板用于定义如何显示集合中的每一项。在 WPF 中,可以使用 DataTemplate 来创建自定义的数据展示模板。例如,如果我们有一个 Person 类,包含 Name 和 Age 属性,且希望以自定义的方式显示每个人的信息,可以定义一个 DataTemplate:

<Window.Resources>
    <DataTemplate x:Key="PersonTemplate">
        <StackPanel>
            <TextBlock Text="{Binding Name}" FontWeight="Bold" />
            <TextBlock Text="{Binding Age}" />
        </StackPanel>
    </DataTemplate>
</Window.Resources>

<ListBox ItemsSource="{Binding People}" ItemTemplate="{StaticResource PersonTemplate}" />

标签:控件,object,示例,绑定,概念,相关,WPF,public,属性
From: https://www.cnblogs.com/JosenEarth/p/18599261

相关文章

  • 演示:基于WPF开发的仿PPT程序,演示基于DrawingVisual开发的2D图形绘制工具
    一、目的:基于WPF开发的仿PPT程序,演示基于DrawingVisual开发的2D图形绘制工具二、效果图三、环境VS2022,.net7.0,WPF四、功能图形绘制基础绘图矩形多线段多边形点和文本曲线标记箭头导入图片标尺椭圆平滑曲线圆形贝塞尔曲线进攻方向箭头圆弧Visu......
  • Queue 相关知识
    1.Queue与Deque的区别Queue是单端队列,只能从一端插入元素,另一端删除元素,实现上一般遵循先进先出(FIFO)规则。Deque是双端队列,在队列的两端均可以插入或删除元素。2.ArrayDeque和LinkedList2.1ArrayDequeArrayDeque是基于动态循环数组和双指针来实现ArrayDeque插入......
  • 简述下Flex的容器和项目的概念
    在Flex布局中,有两个关键概念:容器和项目。容器(Container):指应用了display:flex或display:inline-flex的元素。它是Flex项目的父元素,控制着项目的布局和排列方式。容器通过一系列属性来定义其子项目如何排列,例如:flex-direction、justify-content、align-items、flex-wra......
  • 【Unity 低多边形海盗世界资源包】Pirate Low Poly Pack 提供了丰富的海盗相关资产,包
    PirateLowPolyPack是一款专为Unity开发的低多边形风格资源包,旨在为开发者提供海盗主题的游戏元素,帮助创建充满冒险和海上战斗气息的游戏世界。该插件提供了丰富的海盗相关资产,包括角色、船只、岛屿、道具和环境元素等,适用于多种类型的游戏,如动作冒险、角色扮演、策略类......
  • 【Linux】————网络基础相关内容
                                 作者主页:   作者主页                           本篇博客专栏:Linux                ......
  • 《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose
    @目录二、高级篇(大厂进阶)5.Docker-compose容器编排5.1是什么5.2能干嘛5.3去哪下5.4Compose核心概念5.5Compose使用的三个步骤5.6Compose常用命令5.7Compose编排微服务5.7.1改造升级微服务工程docker_boot5.7.2不用Compose5.7.3swagger测试5.7.4上面成功了,有哪些问题?5.7.5......
  • Flask 基本概念
    详细了解Flask的一些基本概念。了解Flask的基本概念对于开发高效的Web应用非常重要。以下是Flask的主要基本概念的详细解析:路由:路由是URL到Python函数的映射。Flask允许你定义路由,这样当特定的URL被访问时,就会调用相应的函数。视图函数:视图函数是处理请求......
  • 关于地面防湿防潮的标准和规范,主要依据不同地区和国家的建筑设计与施工规范来实施。在
    关于地面防湿防潮的标准和规范,主要依据不同地区和国家的建筑设计与施工规范来实施。在中国,涉及地面防湿防潮的相关标准和规范主要有以下几部:1. 《建筑工程施工质量验收统一标准》(GB50300-2013)该标准是中国建筑行业常用的施工质量验收标准,涉及建筑各方面的质量要求,其中包括防潮......
  • WPF表单验证
    利用Validator.TryValidateProperty方法以及IDataErrorInfo实现XML代码如下 <Grid><SliderVerticalAlignment="Bottom"Minimum="0"Maximum="1000"Name="slider"Value="10"></Slider><TextBoxH......
  • 贴砖工程的验收规范主要依据国家和行业的相关标准,确保施工质量符合设计要求,并确保使用
    贴砖工程的验收规范主要依据国家和行业的相关标准,确保施工质量符合设计要求,并确保使用中的安全性和耐久性。下面是一些关键的验收规范和标准,涵盖了瓷砖铺设的质量控制、检测方法、合格标准等方面。1. 主要参考规范与标准《建筑装饰装修工程质量验收规范》(GB50210)《建筑工程......