WPF控件
控件分类概览常用控件常用控件代码示例和效果
样式与模板应用样式定义方式行内样式页面/窗口级资源样式(Local Resource)应用程序全局资源独立资源字典(ResourceDictionary)控件模板(ControlTemplate)主题样式(Themes)
样式继承样式的优先级规则
控件分类概览
布局控件上一篇文章单独讲了,这篇就主要讲其他类型的控件
常用控件
内容控件 Button:触发操作,可通过Content属性嵌入任意内容(如文本、图标)。 Label/TextBlock:显示文本,前者支持快捷键绑定,后者轻量级。条目控件 ListBox/ComboBox:显示列表数据,支持数据绑定和模板定制。 DataGrid:表格控件,支持排序、分页和复杂数据展示。输入控件 TextBox:单行文本输入。 RichTextBox:支持富文本格式(字体、颜色、段落)。 PasswordBox:密码输入,隐藏明文。 CheckBox/RadioButton:多选和单选控件。特殊容器 TabControl:分页显示,通过TabItem管理多视图。 Expander:可折叠面板,节省空间
常用控件代码示例和效果
其实主要需要理解的是TabControl 与 Expander 其他控件比较简单易懂,这个例子看懂了基本上对于布局以及控件的常用基础就差不多了,如果需求用到不常用的也可以单独在去查看使用。
ItemsSource="{Binding DataItems}">
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataContext = this;
}
public ObservableCollection
{
"选项一", "选项二", "选项三"
};
public ObservableCollection
{
new DataItem { Id = 1, Name = "项目A", IsActive = true },
new DataItem { Id = 2, Name = "项目B", IsActive = false }
};
private void Button_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("按钮被点击!");
}
}
public class DataItem
{
public int Id { get; set; }
public string Name { get; set; }
public bool IsActive { get; set; }
}
样式与模板应用
WPF通过样式(Style)和模板(Template)实现界面统一与定制
样式定义方式
行内样式
直接设置控件属性(如Background=“Blue”),适用于局部简单调整。
页面/窗口级资源样式(Local Resource)
在 Window 或 Page 的 Resources 中定义样式 适用于当前页
应用程序全局资源
在 App.xaml 的 Application.Resources 中定义样式 适用全局
独立资源字典(ResourceDictionary)
将样式拆分到独立 XAML 文件,通过合并字典引用,大型项目模块化样式管理
创建 Styles/Buttons.xaml
在 App.xaml 中合并
控件模板(ControlTemplate)
通过 ControlTemplate 完全重构控件视觉树。 适用场景:需要彻底改变控件外观(如圆形按钮)
资源字典中(推荐)
单个控件内
TargetType:指定模板适用的控件类型(如 Button、CheckBox)。 TemplateBinding:将模板元素的属性绑定到控件的依赖属性(如 Background、Foreground)。 ContentPresenter:占位符,用于显示控件的Content 属性(如按钮文本)
主题样式(Themes)
通过 ThemeInfo 和主题资源字典实现动态换肤。 适用场景:需要支持多套主题切换(如白天/夜间模式)
在 App.xaml.cs 中设置主题
public partial class App : Application
{
public void ChangeTheme(string themeName)
{
Resources.MergedDictionaries.Clear();
Resources.MergedDictionaries.Add(
new ResourceDictionary { Source = new Uri($"/Themes/{themeName}.xaml", UriKind.Relative) });
}
}
创建主题文件 Themes/Dark.xaml
样式继承
通过 BasedOn 复用基础样式
样式的优先级规则
当直接设置属性和样式冲突时,优先级顺序如下: 控件直接设置属性 > 显式样式(Style) > 隐式样式(无x:Key的样式) > 控件默认样式 隐式样式的作用域 无 x:Key 的