以下是一些经典的WPF入门实例,它们可以帮助你熟悉并理解WPF的基本概念和用法:
1. Hello, WPF!: 这个例子非常简单,它展示了一个包含一个按钮的窗口,并演示了如何处理按钮的点击事件。
```xaml<Window x:Class="MyWpfApp.MainWindow"        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"        Title="Hello, WPF!" Height="200" Width="300">    <Grid>        <Button Content="Click Me" Click="Button_Click" HorizontalAlignment="Center" VerticalAlignment="Center" />    </Grid></Window>```
```csharpusing System.Windows;
namespace MyWpfApp{    public partial class MainWindow : Window    {        public MainWindow()        {            InitializeComponent();        }
        private void Button_Click(object sender, RoutedEventArgs e)        {            MessageBox.Show("Hello, WPF!");        }    }}```
2. 数据绑定: 这个例子展示了如何使用数据绑定来将数据与界面元素进行关联。它展示了一个简单的学生信息列表,并演示了如何通过数据绑定显示和编辑学生的姓名和年龄。
```xaml<Window x:Class="MyWpfApp.MainWindow"        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"        Title="Student List" Height="300" Width="400">    <StackPanel>        <ListBox x:Name="lstStudents" DisplayMemberPath="Name" SelectionChanged="lstStudents_SelectionChanged" />        <TextBox x:Name="txtName" Text="{Binding SelectedItem.Name, ElementName=lstStudents}" />        <TextBox x:Name="txtAge" Text="{Binding SelectedItem.Age, ElementName=lstStudents}" />    </StackPanel></Window>```
```csharpusing System.Collections.ObjectModel;using System.ComponentModel;using System.Windows;
namespace MyWpfApp{    public partial class MainWindow : Window    {        public ObservableCollection<Student> Students { get; set; }
        public MainWindow()        {            InitializeComponent();            DataContext = this;
            Students = new ObservableCollection<Student>            {                new Student { Name = "Alice", Age = 20 },                new Student { Name = "Bob", Age = 22 },                new Student { Name = "Charlie", Age = 19 }            };
            lstStudents.ItemsSource = Students;        }
        private void lstStudents_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)        {            CollectionViewSource.GetDefaultView(Students).Refresh();        }    }
    public class Student : INotifyPropertyChanged    {        private string name;        public string Name        {            get { return name; }            set            {                if (name != value)                {                    name = value;                    OnPropertyChanged(nameof(Name));                }            }        }
        private int age;        public int Age        {            get { return age; }            set            {                if (age != value)                {                    age = value;                    OnPropertyChanged(nameof(Age));                }            }        }
        public event PropertyChangedEventHandler PropertyChanged;
        protected virtual void OnPropertyChanged(string propertyName)        {            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));        }    }}```
3. 命令: 这个例子展示了如何使用命令来处理用户界面上的操作。它展示了一个包含两个按钮的窗口,点击按钮时分别触发自定义命令的执行。
```xaml<Window x:Class="MyWpfApp.MainWindow"        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"        Title="Command Example" Height="200" Width="300">    <StackPanel>        <Button Content="Say Hello" Command="{Binding SayHelloCommand}" />        <Button Content="Say Goodbye" Command="{Binding SayGoodbyeCommand}" />    </StackPanel></Window>```
```csharpusing System;using System.Windows;using System.Windows.Input;
namespace MyWpfApp{    public partial class MainWindow : Window    {        public ICommand SayHelloCommand { get; set; }        public ICommand SayGoodbyeCommand { get; set; }
        public MainWindow()        {            InitializeComponent();            DataContext = this;
            SayHelloCommand = new RelayCommand(SayHello);            SayGoodbyeCommand = new RelayCommand(SayGoodbye);        }
        private void SayHello(object parameter)        {            MessageBox.Show("Hello, WPF!");        }
        private void SayGoodbye(object parameter)        {            MessageBox.Show("Goodbye, WPF!");        }    }
    public class RelayCommand : ICommand    {        private Action<object> execute;        private Func<object, bool> canExecute;
        public event EventHandler CanExecuteChanged        {            add { CommandManager.RequerySuggested += value; }            remove { CommandManager.RequerySuggested -= value; }        }
        public RelayCommand(Action<object> execute)            : this(execute, null)        {        }
        public RelayCommand(Action<object> execute, Func<object, bool> canExecute)        {            this.execute = execute;            this.canExecute = canExecute;        }
        public bool CanExecute(object parameter)        {            return canExecute == null || canExecute(parameter);        }
        public void Execute(object parameter)        {            execute(parameter);        }    }}```
这些例子涵盖了WPF的基本概念和用法,其中包括界面组件的使用、数据绑定、命令等。通过学习和实践这些例子,你可以快速入门并开始开发自己的WPF应用程序。
该文章在 2024/2/7 23:15:35 编辑过