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