WPF入门练习01

简介: 说到wpf,我之前以为它会很难,不过学了一点知识之后,我觉得和winform差不多,最大的差别就是wpf前台布局是使用相当于XML的语言来编写的,不过学了一下也就懂了。

说到wpf,我之前以为它会很难,不过学了一点知识之后,我觉得和winform差不多,最大的差别就是wpf前台布局是使用相当于XML的语言来编写的,不过学了一下也就懂了。

下面就是练习的两个简单的例子:

例子1,生成10行10列,随机放图片:

前台布局:

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525" Icon="/WpfApplication1;component/Images/logo.ico" Loaded="Window_Loaded">
    <Grid>
        <!--<StackPanel>
            <Button Width="70px"  Content="btn1" Name="btn1"></Button>
            <ProgressBar Margin="10px " Height="13" Minimum="0" Maximum="100" Value="70" Name="progressBar1" Width="284" />
        </StackPanel>-->
        <Grid Name="grid1">
            <!--行和列定义-->
            <!--<Grid.RowDefinitions>
                <RowDefinition></RowDefinition>
                <RowDefinition></RowDefinition>
                <RowDefinition></RowDefinition>
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition></ColumnDefinition>
                <ColumnDefinition></ColumnDefinition>
                <ColumnDefinition></ColumnDefinition>
                <ColumnDefinition></ColumnDefinition>
            </Grid.ColumnDefinitions>
            <Button Content="1行1列" Grid.Row="1" Grid.Column="1" Margin="0,0,44,68"></Button>-->
        </Grid>
    </Grid>
</Window>

后台代码:

    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            if (sender is Button)
            {
                Button bt = sender as Button;
                MessageBox.Show(bt.Name);
            }
            else
            {
                MessageBox.Show("其他");
            }
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            for (int i = 0; i < 10; i++)
            {
                ColumnDefinition colum=new ColumnDefinition();
                grid1.ColumnDefinitions.Add(colum);
                RowDefinition row = new RowDefinition();
                grid1.RowDefinitions.Add(row);
            }
            Random rd = new Random();
            for (int i = 0; i < 10; i++)
            {
                for (int j = 0; j < 10; j++)
                {
                    //Button btn = new Button();
                    //btn.Content = i+","+j;
                    //Grid.SetRow(btn, i);
                    //Grid.SetColumn(btn, j);
                    //grid1.Children.Add(btn);
                    Image img = new Image();
                    img.Source = new BitmapImage(new Uri(string.Format("Images/{0}.gif",rd.Next(1,11)),UriKind.Relative));
                    Grid.SetRow(img, i);
                    Grid.SetColumn(img, j);
                    grid1.Children.Add(img);
                }
            }
        }
    }

     

例子2 菜单和工具栏控件的使用:

前台布局:

<Window x:Class="WpfControl1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="主窗口" Height="350" Width="525" ResizeMode="NoResize" WindowStartupLocation="CenterScreen" Icon="/WpfControl1;component/Images/logo.ico">
    <Grid>
        <DockPanel>
            <Menu DockPanel.Dock="Top">
                <MenuItem Header="文件">
                    <MenuItem Header="打开" Name="MI_Open" Click="MI_Open_Click">
                        <MenuItem Header="1.txt" Click="MI_Open_Click"></MenuItem>
                        <MenuItem Header="2.txt" Click="MI_Open_Click"></MenuItem>
                        <MenuItem Header="3.txt" Click="MI_Open_Click"></MenuItem>
                        <MenuItem Header="选择文件…" Name="MI_OpenFile" Click="MI_Open_Click"></MenuItem>
                    </MenuItem>
                    <MenuItem Header="保存" Name="MI_SaveFile" Click="MI_Open_Click"></MenuItem>
                </MenuItem>
                <MenuItem Header="编辑"></MenuItem>
                
            </Menu>
            <ToolBar DockPanel.Dock="Top">
                <Button Content="新建"></Button>
                <Button Content="打开" Name="btnOpenWin" Click="btnOpenWin_Click"></Button>
                <CheckBox Content="是否选择"></CheckBox>
            </ToolBar>
            <TextBox DockPanel.Dock="Bottom" TextWrapping="Wrap" Name="txtContent"></TextBox>
        </DockPanel>
    </Grid>
</Window>


后台代码:

    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
        private string  FilePath="";
        private void MI_Open_Click(object sender, RoutedEventArgs e)
        {
            if (sender is MenuItem)
            {
                MenuItem mi = sender as MenuItem;
                //MessageBox.Show(mi.Name);
                switch (mi.Name)
                {
                    case "MI_OpenFile":
                        {
                            OpenFileDialog ofd = new OpenFileDialog();
                            ofd.Filter = "文本文件(aspx,html,txt)|*.txt;*.html;*.aspx|所有文件|*.*";
                            ofd.FilterIndex = 0;
                            ofd.Multiselect = true;
                            ofd.InitialDirectory = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Desktop);
                            if(ofd.ShowDialog()==true)
                            {
                               // MessageBox.Show(ofd.FileName);
                                FilePath = ofd.FileName;
                                txtContent.Text = System.IO.File.ReadAllText(FilePath,Encoding.Default);
                            }
                        }
                        break;
                    case "MI_SaveFile":
                        {
                            
                            SaveFileDialog sfd = new SaveFileDialog();
                            sfd.Filter = "文本文件(aspx,html,txt)|*.txt;*.html;*.aspx|所有文件|*.*";
                            sfd.FilterIndex = 0;
                            if (FilePath != "")
                            {
                                sfd.InitialDirectory = System.IO.Path.GetFullPath(FilePath);
                            }
                            else
                            {
                                sfd.InitialDirectory = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Desktop);
                            }
                            if (sfd.ShowDialog() == true)
                            {
                                System.IO.File.WriteAllText(sfd.FileName, txtContent.Text,Encoding.Default);
                            }
                        }
                        break;
                    default: 
                        break;
                }
            }
            else
            {
                MessageBox.Show("不是菜单项。");
            }
        }
        //打开一个新窗口,与winform一样
        private void btnOpenWin_Click(object sender, RoutedEventArgs e)
        {
            //SecondWin win2 = new SecondWin("第二窗口");
            //win2.ShowActivated = true;
            //win2.WindowStartupLocation = WindowStartupLocation.CenterScreen;
            //bool? result=win2.ShowDialog();
            //if (result != null)
            //{
            //    MessageBox.Show(result.ToString());
            //}
        }
    }



相关文章
|
6月前
|
C# 开发者 Windows
WPF 应用程序开发:一分钟入门
本文介绍 Windows Presentation Foundation (WPF),这是一种用于构建高质量、可缩放的 Windows 桌面应用程序的框架,支持 XAML 语言,方便 UI 设计与逻辑分离。文章涵盖 WPF 基础概念、代码示例,并深入探讨常见问题及解决方案,包括数据绑定、控件样式与模板、布局管理等方面,帮助开发者高效掌握 WPF 开发技巧。
225 65
|
7月前
|
C# 开发者 Windows
全面指南:WPF无障碍设计从入门到精通——让每一个用户都能无障碍地享受你的应用,从自动化属性到焦点导航的最佳实践
【8月更文挑战第31天】为了确保Windows Presentation Foundation (WPF) 应用程序对所有用户都具备无障碍性,开发者需关注无障碍设计原则。这不仅是法律要求,更是社会责任,旨在让技术更人性化,惠及包括视障、听障及行动受限等用户群体。
163 0
|
7月前
|
C# Windows IDE
WPF入门实战:零基础快速搭建第一个应用程序,让你的开发之旅更上一层楼!
【8月更文挑战第31天】在软件开发领域,WPF(Windows Presentation Foundation)是一种流行的图形界面技术,用于创建桌面应用程序。本文详细介绍如何快速搭建首个WPF应用,包括安装.NET Framework和Visual Studio、理解基础概念、创建新项目、设计界面、添加逻辑及运行调试等关键步骤,帮助初学者顺利入门并完成简单应用的开发。
257 0
WPF-布局样式练习-Day02-聊天气泡
WPF-布局样式练习-Day02-聊天气泡
316 1
WPF-布局样式练习-Day01
WPF-布局样式练习-Day01
153 0
|
前端开发 C# 数据库
WPF MVVM系统入门-下
本文详细讲解WPF,MVVM开发,实现UI与逻辑的解耦。
274 0
|
前端开发 数据可视化 C#
WPF MVVM系统入门-上
本文详细讲解WPF,MVVM开发,实现UI与逻辑的解耦。
296 0
|
Shell C# 调度
WPF PRISM开发入门一( 初始化PRISM WPF程序)
原文:WPF PRISM开发入门一( 初始化PRISM WPF程序) 这篇博客将介绍在WPF项目中引入PRISM框架进行开发的一些基础知识。目前最新的PRISM的版本是Prism 6.1.0,可以在Github上获取PRISM的源码。
3804 0
|
前端开发 C#
C#网络应用编程,实验一:WPF练习
C#网络应用编程,实验一:WPF练习
316 1
C#网络应用编程,实验一:WPF练习
C#编程-127:WPF初级入门
C#编程-127:WPF初级入门
115 0
C#编程-127:WPF初级入门