WPF基础学习

WPF学习

     基础需要比较少
     WPF是用来替代WinForm
     WPF的核心:XAML技术,平板电脑开发, Windows Phone手机开发
______________________________________________________________________________________________
控件
     比较常用的事件button(click)  Loaded事件
     控件名字取得要有意义
     Focus()获取焦点
     
______________________________________________________________________________________________
集合
     List list = new List();
     list.Add(123);
     list.Add(234);
     list.Remove(123);
     list.Clear();


______________________________________________________________________________________________
手写XAML是必须的过程,就像手写HTML一样的;   学从难处学,易从易处用
XAML语法
  • 属性值必须是双引号
  • 闭合结构,有开始,有结束
  • 大小写敏感
  • 每个节点就是一个控件,每一个XAML标签都可以new出来
  • 属性值有两种赋值方法,一直接=;  二是

______________________________________________________________________________________________
常用控件
     常用属性:
  • //Visibility的值控制控件的显示: Collapsed隐藏, Visible可见
  • ReadOnly只读属性
  • TextWrapping="Wrap"可以折行,自动换行
  • IsEnable: 控件是否可用: bool类型
  • Background背景"色", FontSize字体大小
  • MaxLength: 最大长度
  • PasswordBox: 密码框的取值使用Password属性值,而不是Text
  • Margin="15"  距离周边的距离
______________________________________________________________________________________________
可空数据类型: 引用类型, 自定义,string, 大部分类都是
不可空:值类型. int,boolean,decimal, DataTime
##在不可为null的类型后加?就可以为null了
     int? i1 = null; //这是可以的,就因为这个?, 一旦加上?就相当于引用类型(个人理解)
     int i2 = 6;
     int? i3 = i2; //这也是可以的,把int赋值给int?
     int i4 = (int)i3; //这也是可以的,强制转换


______________________________________________________________________________________________
一些控件
  • RadioButton, GroupName是组名
  • DatePicker 选择时间控件,属性值可空
  • Image控件, Source地址
  • ProgressBar, 进度条: IsIndeterminate是否不确定模式: Maximun最大值, Minimum最小值

DateTime.Today 不包含小时,分,秒
DateTime.Now  包含
______________________________________________________________________________________________
页面布局
  • 绝对定位,使用具体数值定位
  •  StackPanel, 进行布局, Orientation垂直布局,还是水平布局, 可以嵌套
  • Margin对顶点,参数,,    VerticalAlignment="Center"垂直居中
  •  Button btn = new Button(); btn.Content="动态控件";  stackPanel1.Children.Add(btn);
例子:

            
        


例子2:

            
                
                
                
            
            
                
                
                
                
            
            
            
            
        



例子:登陆

        
            
                
                
                
            
            
                
                
            
            
            
            
            
            
            


______________________________________________________________________________________________
连连看棋盘:
 
private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            for (int i = 0; i < 10; i++)
            { //动态创建十行十列
                RowDefinition rdRow = new RowDefinition();
                gridGame.RowDefinitions.Add(rdRow);
                ColumnDefinition cdCol = new ColumnDefinition();
                gridGame.ColumnDefinitions.Add(cdCol);
            }
            Random random = new Random();
            //random.Next(0, 10); //生成<=0, <9的随机整数
            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的静态方法
                    //Grid.SetColumn(btn, j);
                    //gridGame.Children.Add(btn);
                    string imgName = "/img/" + random.Next(1,10) + ".jpg";
                    Image img = new Image();
                    img.Source =  new BitmapImage (new Uri(imgName, UriKind .Relative));
                    Grid.SetColumn(img, j);
                    Grid.SetRow(img, i);
                    gridGame.Children.Add(img);
                }
            }
        }



嵌套的布局:

        
            
                
                
            
            
                
                
            
            
            
                
                
                
            
            
                
                    
                    
                    
                
                
                    
                    
                    
                
                


______________________________________________________________________________________________
练习一: 计算器布局模拟

    
        
            
                
                
                
                
                
                
                
            
            
                
                
                
                
                
            
            
                
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            


  
______________________________________________________________________________________________
练习二: 腾讯微博界面简单模拟

    
        
            
                
                
                
            
            
                
                
                
                
            
            
            
            
            
                
                    
                    
                    
                
                
                
                    
                    
                
            
            
                
                    
                    
                
                
                    
                    
                
                
                    
                    
                
            
            
                
                    
                    
                
            
        
    


  
______________________________________________________________________________________________
菜单
  • 普通菜单(主菜单)-Menu, 上下文菜单(右键菜单)-ToolBar两种
  • DockPanel 先到先得空间
______________________________________________________________________________________________
窗口
  • 标题用Window的Title属性
  • 不想能够修改大小: ResizeMode = "NoResize"
  • 窗口打开正中央  WindowStartupLocation = "CenterScreen"
  • 窗口间传递参数, 在被传类中新建一个属性值, 在传类中直接给属性赋值
  • 传递的值主要都是通过属性来实现
  • App.xaml中可以修改启动窗口
窗口练习1:

    
        
            
                
                    
                        
                        
                    
                
                
                
                
                
            
            
                
                
                


 
 
namespace 菜单栏
{
    /// 
    /// MainWindow.xaml 的交互逻辑
    /// 
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
        private void btnClose_Click(object sender, RoutedEventArgs e)
        {
            AbortWindow aw = new AbortWindow();
            aw.UserName = txtUserName.Text;
            aw.ShowDialog();
            txtMessage.Text = "走成功了吗?--" + aw.Chose;
        }
    }
}



    
        
            
            
        
        
        


 
namespace 菜单栏
{
    /// 
    /// AbortWindow.xaml 的交互逻辑
    /// 
    public partial class AbortWindow : Window
    {
        public string UserName { get; set; }
        public string Chose { get; set; }
        public AbortWindow()
        {
            InitializeComponent();
        }
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            txtUserName.Text = UserName + ",您真地要走吗?" ;
        }
        private void btnYes_Click(object sender, RoutedEventArgs e)
        {
            Chose = "Yes";
            this.Close();
        }
        private void btnNo_Click(object sender, RoutedEventArgs e)
        {
            Chose = "No";
            this.Close();
        }
     }
}



______________________________________________________________________________________________
打开文件, 和保存文件

       
 private void btnOpenFile_Click( object sender, RoutedEventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Filter = "文本文件|*.txt|图片|*.png|视频|*.avi|所有文件|*.*" ;
            if (ofd.ShowDialog() == true )
            {
                MessageBox .Show("选择成功!" + ofd.FileName.ToString());
            }
            else
            {
                MessageBox .Show("选择失败!" );
            }
           
        }
        private void btnSaveFile_Click( object sender, RoutedEventArgs e)
        {
            SaveFileDialog sfd = new SaveFileDialog();
            sfd.Filter = "文本|*.txt|word文件|*.doc" ;
            if (sfd.ShowDialog() == true )
            {
                MessageBox .Show(sfd.FileName.ToString());
            }
 
        }



图片打开和显示
OpenFileDialog ofd = new OpenFileDialog();
            ofd.Filter = "png图??片?|*.png|所??有?D文?件t|*.*" ;
            if (ofd.ShowDialog() == true )
            {
                string fileName = ofd.FileName;
                imgShow.Source = new BitmapImage ( new Uri (fileName));
            }
________________

______________________________________________________________________________

你可能感兴趣的:(.net技术扩展笔记,.NET,笔记,黑马)