WPF创建简单用户控件

WPF创建简单用户控件

基本概念

用户控件(User Control)​​是一种可重用的UI组件,通过组合现有控件来创建自定义功能模块。它本质上是一个容器,可以包含其他控件并封装其交互逻辑。

主要特点

  • ​继承自UserControl类​​.
  • ​XAML+代码后置.
  • 可重用​​的独立功能单元.
  • 可自定义属性、方法和事件​.

核心优势

  1. 开发效率提升
  2. 维护性增强
  3. 功能解耦

示例

假设需要封装一个FileSelectorBox控件,用来实现文件选择的功能。

  • 控件组成: 由一个TextBlock和一个Button组成。
  • 依赖属性: FilePath(当前选择的文件路径)
  • 自定义事件: OnFileChanged(当文件路径发生改变)

创建用户控件

右键项目,选择添加,选择用户控件

创建控件
创建控件

组合现有控件

xml
<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="Auto"/>
    </Grid.ColumnDefinitions>
    <TextBlock Grid.Column="0"/>
    <Button Grid.Column="1" Content="选择" Width="71"/>
</Grid>

添加依赖属性和自定义事件

当FilePath被修改时,需要修改TextBlock的内容

xml
<TextBlock Grid.Column="0" Text="{Binding FilePath,
          RelativeSource={RelativeSource AncestorType=UserControl}}" />

按钮功能

当按钮点击时,需要弹出一个文件选择框来选择文件

xml
<Button Grid.Column="1" Content="选择" Width="71" Click="Button_Click" />
c#
private void Button_Click(object sender, RoutedEventArgs e)
{
    Button button = (Button)sender;
    switch(button.Content)
    {
        case "选择":
            OpenFileDialog openFileDialog = new()
            {
                Title = "选择文件",
                Filter = "All File|*.*"
            };
            openFileDialog.ShowDialog();
            FilePath = openFileDialog.FileName;
            break;
    }
}

控件使用

xml
<Grid>
    <local:FileSelectorBox  FilePath="{Binding ExternalFilePath, Mode=TwoWay}" OnFileChanged="FileSelectorBox_OnFileChanged"/>
</Grid>

资源下载

下载链接

WPF实现本地化及运行时切换语言
WPF依赖属性的注册与绑定

评论区

评论加载中...