最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

WPF学习_day1

来源:博客园

WPF绑定数据


(资料图片仅供参考)

使⽤ Binding 对象建⽴绑定,且每个绑定通常具有四个组件:绑定⽬标、⽬标属性、绑定源以及指向要使⽤的源值的路径。

第一种绑定方式(在前台绑定):

过程:定义一个字典资源 设置key和值(绑定的类)——>上下文绑定字典资源关联类 ——>绑定类中的属性

DataBind.xaml:

                                                                                                                          

MyData.cs

namespace Wang.Wpf.Entity{    class MyData    {        private string colorName = "green";        private int buWidte = 350;        ///         /// colorName属性的默认值为“red”,ctrl+r+e,快速封装字段        ///         public string ColorName { get => colorName; set => colorName = value; }        public int BuWidte { get => buWidte; set => buWidte = value; }    }}

第二种绑定方式(在后台绑定):

DataBind.xaml中设置窗口刚加载时的事件Title="DataBind" Height="450" Width="800" Loaded="Window_Loaded">

MyData.cs

space Wang.Wpf.Entity{    class MyData    {        private string colorName = "green";        private int buWidte = 350;        ///         /// colorName属性的默认值为“red”,ctrl+r+e,快速封装字段        ///         public string ColorName { get => colorName; set => colorName = value; }        public int BuWidte { get => buWidte; set => buWidte = value; }        public string Title { get; set; }    }

DataBind.xaml.cs

private void Window_Loaded(object sender, RoutedEventArgs e){    //数据绑定    (MyLabel是label的name,DataContext绑定的数据为MyData()类    MyLabel.DataContext = new MyData()    {        Title = "这是一个label"     };}

控件

1. 内容控件

(1) Label

表示控件的文本标签,并提供访问密钥支持。

Label使用绑定来设置目标

(2)TextBlock

TextBlock提供一个轻型控件,用于显示少量流内容。

    我是⽂本⼀    我是⽂本⼆    我是⽂本三

(3)Button

表示 Windows 按钮控件,该按钮对Click事件做出反应。

(4)Border

在另一个元素四周绘制边框和/或背景。

Border只能有一个子级。 若要显示多个子元素,需要在父Border内放置一个附加Panel元素。 然后,可以在该Panel元素中放置子元素。

如果要在内容周围显示边框,必须将元素放在父Border元素中。

                    

(5)RadioButton

表示可由用户选择但不能清除的按钮。 可以通过单击来设置IsChecked的RadioButton属性,但只能以编程方式清除该属性。

创建两个单独的RadioButton组:colorgrpnumgrp。 用户可以在每个组中选择一个RadioButton。

    Red    Blue    1    2

(6)CheckBox

表示用户可以选择和清除的控件。

CheckBox控件继承ToggleButton并可以有三种状态:选中 (选定的) 、未选中 (清除) 和不确定。

xaml                                                    
csprivate void Button_Click(object sender, RoutedEventArgs e)        {            UIElementCollection childrens = course.Children;            StringBuilder stringBuilder = new StringBuilder();            foreach(UIElement iElement in childrens)            {                if(iElement is CheckBox && (iElement as CheckBox).IsChecked.Value)                {                    stringBuilder.Append((iElement as CheckBox).Content+",");                }                           }            MessageBox.Show("课程为:" + stringBuilder.ToString());        }        //只能选择一个,,用于单选按钮的数据绑定        private void Button_Click_1(object sender, RoutedEventArgs e)        {            StringBuilder builder = new StringBuilder();            if (c.IsChecked.Value)            {                builder.Append(c.Content +",");            }            else if(s.IsChecked.Value)            {                builder.Append(s.Content + ",");            }            else if (w.IsChecked.Value)            {                builder.Append(w.Content + ",");            }            else if(z.IsChecked.Value)            {                builder.Append(z.Content + ",");            }            MessageBox.Show("选课为:" + builder.ToString());        }

(7)ToolTip

表示一个控件,该控件可创建一个弹出窗口,以便在界面中显示元素的信息。

tooltip是其它控件的属性

TextBox with ToolTip      Useful information goes here.  

若用使用ToolTip标签要在控件的ToolTip属性里书写

ToolTip with non-text content              Useful information goes here.      

(8)GroupBox

该控件用于创建具有用户界面 (UI) 内容边框和标题的容器。

Header属性的使用、GroupBox的内容可以自由组合、

使用自定义模板 ===>>在里面使用需要指定key,需要指定作用目标。

                                                                                                                                                                                                                                                                                             _Personal Info                                                                    Select your name                                                                            Esther                                        George                                        Alan                                        Eric                                                                                                                                                                                                              
                          

(9)Expander

表示一种控件,该控件显示具有可折叠内容显示窗口的标题。

                        C#            JAVA            C++            

(10) Frame

框架是一种支持导航的内容控件。

A、基本格式(frame的name和绑定的资源source)

<frame Name="myFrame" Source="https://www.bilibili.com/" ></frame>

B、跳转后frame中的页面改变

WindowFrame.xaml

                        <frame Name="myFrame" Source="https://www.bilibili.com/" VerticalAlignment="Top"                HorizontalAlignment="Center" Width="700" Height="320" Margin="0,50" NavigationUIVisibility="Visible" LoadCompleted="myFrame_LoadCompleted">        </frame>    

WindowFrame.xaml.cs

private void Button_Click(object sender, RoutedEventArgs e)        {                         //1.使用Source绑定跳转的页面 UriKind表示绑定资源的相对路径或者绝对路径             myFrame.Source = new Uri("https://www.baidu.com",UriKind.Absolute);             //2.使用Navigate跳转             MyPages myPages = new MyPages();             myFrame.Navigate(myPages);             //使用url             myFrame.Navigate(new Uri("https://www.baidu.com"));                }

带参数传递

private void Button_Click(object sender, RoutedEventArgs e)        {            //使用Navigate跳转               //使用url带参数            MyPages myPages = new MyPages();            myFrame.Navigate(myPages,"参数parameter"); //通过事件加载完成获取到            //向MyPages这个页面传递参数            MyPages myPages = new MyPages("这是带参数传到页面上");            myFrame.Navigate(myPages);         }        private void myFrame_LoadCompleted(object sender, System.Windows.Navigation.NavigationEventArgs e)        {            object extraData = e.ExtraData;//获取传过来的参数            Console.WriteLine(extraData); //参数parameter        }

MyPages.axml

            

MyPages.axml.cs

public partial class MyPages : Page    {        public MyPages()        {            InitializeComponent();        }        private string _param; //接受传入的参数        public MyPages(string _param) :this()        {            this._param = _param;            Console.WriteLine(this._param);        }    }

关键词: 显示边框 水平方向 我们需要