掌握WPF控件:熟练常用属性(二)

WPF布局常用控件(二)

Calendar

  • 用于日期选择的控件。它提供了一个可视化的界面,可以通过它来选择特定的日期。
常用属性 描述
DisplayMode 用来设置Calendar的显示模式,有三种可选值:默认Month(月)、Year(年)和Decade(十年)。
SelectedDate 用来获取或设置当前选中的日期。
Mode 用来设置Calendar的显示模式,有默认Day(日)、Month(月)、Year(年)和Decade(十年)等模式。
FirstDayOfWeek 用来设置一周的第一天是星期几。
DisplayDate 用来设置初始显示得日期
SelectedDates 用来获取当前选中的所有日期。
IsTodayHighlighted 用来突出显示当前日期。默认IsTodayHighlighted 为 true。
SelectedDatesChanged 选中的日期发生变化时会触发这个事件。
  • 下面写个列子
// xaml 代码

    
        
        
        
    
    
        
        
        
        
        
    
    
    
    
    
    
    

//C# 代码
using System.Windows;
using System.Windows.Controls;

namespace WpfCommonControls
{
    /// 
    /// Calendar.xaml 的交互逻辑
    /// 
    public partial class Calendar : Window
    {
        public Calendar()
        {
            InitializeComponent();
            // 获取当前初始值
            var displayDate = myCalendar.DisplayDate;
            SelectedDateText.Text = $"选中日期(SelectedDate):{displayDate.ToString()}";
        }

        private void Button_Change_Month(object sender, RoutedEventArgs e)
        {
            //设置显示模式月
            myCalendar.DisplayMode = CalendarMode.Month;
        }

        private void Button_Change_Year(object sender, RoutedEventArgs e)
        {
            //设置显示模式年
            myCalendar.DisplayMode = CalendarMode.Year;
        }

        private void Button_Change_Decade(object sender, RoutedEventArgs e)
        {
            //设置显示模式十年
            myCalendar.DisplayMode = CalendarMode.Decade;
        }

        private void myCalendar_SelectedDatesChanged(object sender, SelectionChangedEventArgs e)
        {
             // 获取当前选中的日期集合  
			 var selectedDate = myCalendar.SelectedDates;
			 SelectedDateText.Text =$"选中日期(SelectedDate):{selectedDate.FirstOrDefault()}";
			
			 或
			  获取当前选中的日期  
			 //var selectedDate = myCalendar.SelectedDate;
			 //SelectedDateText.Text = $"选中日期(SelectedDate):{selectedDate.ToString()}";
        }

        private void Button_Change_IsTodayHighlighted(object sender, RoutedEventArgs e)
        {
            //设置今日日期突出显示/隐藏
            myCalendar.IsTodayHighlighted = !myCalendar.IsTodayHighlighted;
        }
        
    }
}

掌握WPF控件:熟练常用属性(二)_第1张图片

CheckBox

  • 是一个选框选框控件,它允许用户在界面上选择或取消选择一个选项。
常用属性 描述
IsChecked 用于获取或设置CheckBox的选中状态。它是个Nullable类型,选中时为true,未选中时为false,也可以设置为null表示不确定状态。
IsThreeState 用于设置其具有三种状态:真、假和不确定。当IsThreeState属性设置为true时,CheckBox将多了一种“不确定状态”的第三种状态
Content 用于获取或设置CheckBox的内容,它可以是任何类型的对象,例如字符串、数字、图像等
Checked 当CheckBox的选中时,会触发Checked事件。
Unchecked 当CheckBox的取消选中时,会触发Unchecked事件。
Indeterminate 当CheckBox的状态不确定时,会触发Indeterminate事件
  • 下面写个列子
 
     
         
         
         
         
         
         
     
     

     
     
     

     
     
 
using System.Windows;

namespace WpfCommonControls
{
    /// 
    /// CheckBox.xaml 的交互逻辑
    /// 
    public partial class CheckBox : Window
    {
        public CheckBox()
        {
            InitializeComponent();
        }
        
        private void myCheckBox_Checked(object sender, RoutedEventArgs e)
        {
            // 勾选
            myTextTip.Text = $"三种勾选状态为:选中{myCheckBox.IsChecked}";
        }

        private void myCheckBox_Unchecked(object sender, RoutedEventArgs e)
        {
            //取消勾选
            myTextTip.Text = $"三种勾选状态为:取消选中{myCheckBox.IsChecked}";
        }

        private void myCheckBox_Indeterminate(object sender, RoutedEventArgs e)
        {
            //勾选状态为不确定时
            myTextTip.Text = $"三种勾选状态为:不确定{myCheckBox.IsChecked}";
        }
    }
}

掌握WPF控件:熟练常用属性(二)_第2张图片

ComboBox

  • 下拉列表框,它允许用户从下拉列表中选择一个选项。
常用属性 描述
Items 用于获取或设置ComboBox中的选项列表。
SelectedIndex 用于获取或设置当前选中的选项的索引。
SelectedItem 用于获取或设置当前选中的选项的值。
IsEditable 用于设置ComboBox是否可编辑,如果可编辑,则用户可以在文本框中直接输入文本。
IsReadOnly 用来设置用户是否能直接在ComboBox文本框内修改文本。IsReadOnly默认值为false,只有IsEditable设置为true时才生效。
  • 下面写个列子
//xaml代码

    
        
        
        
        
        
    
    
    
    
    
        
            
            
            
        

    
    
    
        
            
            
            
        

    

    
    
        
            
            
            
        

    
    

//c#代码
using System.Windows;

namespace WpfCommonControls
{
    /// 
    /// ComboBox.xaml 的交互逻辑
    /// 
    public partial class ComboBox : Window
    {
        public ComboBox()
        {
            InitializeComponent();
            // myComboBox添加数据
            LoadComboBoxItems();
        }

        private void LoadComboBoxItems()
        {
            myComboBox.Items.Add("我是c#添加数据1");
            myComboBox.Items.Add("我是c#添加数据2");
            myComboBox.Items.Add("我是c#添加数据3");
            myComboBox.SelectedIndex = 0; // 设置默认选中的选项

            //然后又用SelectedItem修改了选中值
            myComboBox.SelectedItem = "我是c#添加数据3";

            //最后的索引为2
            int lastIndex = myComboBox.SelectedIndex;
        }

        private void Button_Change_ComboBoxItem(object sender, RoutedEventArgs e)
        {
            // 设置所有的选项为3
            myComboBox.SelectedIndex = 2;
            myComboBox1.SelectedIndex = 2;
            myComboBox2.SelectedIndex = 2;
            myComboBox3.SelectedIndex = 2;

        }
    }
}

掌握WPF控件:熟练常用属性(二)_第3张图片

ContextMenu

  • 用于实现上下文菜单的功能的控件。它通常在鼠标右键单击某个控件时显示一个菜单,供用户选择操作。ContextMenu可以包含MenuItem控件,每个MenuItem代表一个可选项,用户选择后执行相应的操作。
常用属性 描述
Items 用于添加菜单项的集合。
PlacementTarget 用来指定ContextMenu相对于哪个元素定位。
Placement 用来设置和获取ContextMenu在元素上的位置关系。可选有四种值:Auto、Top、Bottom、Right等
PlacementRectangle 用来获取或设置上下文菜单打开时与其所在位置相对的区域。
HasDropShadow 用来获取或设置一个值,该值指示上下文菜单是否显示投影。默认为true
IsOpen 用来控制ContextMenu是否显示。
HorizontalOffset 用来获取或设置目标原点与弹出项对齐点之间的水平距离。
VerticalOffset 用来获取或设置目标原点与弹出项对齐点之间的垂直距离。
  • 下面写个列子

    
        
        
        
        
    
    
    
    

    
    
        我是可以根据菜单事件动态更改文本样式
        
            
               
                
                
                
                
                
                
            
        
    

    
    

    
    

using System.Windows;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;

namespace WpfCommonControls
{
    /// 
    /// ContextMenu.xaml 的交互逻辑
    /// 
    public partial class ContextMenu : Window
    {
        public ContextMenu()
        {
            InitializeComponent();
        }

        private void Bold_Checked(object sender, RoutedEventArgs e)
        {
            // 勾选设置为粗体
            textBox1.FontWeight = FontWeights.Bold;
        }

        private void Bold_Unchecked(object sender, RoutedEventArgs e)
        {
            // 取消设置正常
            textBox1.FontWeight = FontWeights.Normal;
        }

        private void Italic_Checked(object sender, RoutedEventArgs e)
        {
            //设置字体倾斜
            textBox1.FontStyle = FontStyles.Italic;
        }

        private void Italic_Unchecked(object sender, RoutedEventArgs e)
        {
            // 取消 设置字体正常
            textBox1.FontStyle = FontStyles.Normal;
        }

        private void IncreaseFont_Click(object sender, RoutedEventArgs e)
        {
            // 动态设置字体加1
            if (textBox1.FontSize < 18)
            {
                textBox1.FontSize += 2;
            }
        }

        private void DecreaseFont_Click(object sender, RoutedEventArgs e)
        {
            // 动态设置字体减1
            if (textBox1.FontSize > 10)
            {
                textBox1.FontSize -= 2;
            }
        }

    
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            //点击按钮手动打开
            myContextMenu.PlacementTarget = myPlacementTargetBtn; // 设置PlacementTarget属性为myPlacementTargetBtn控件  
            myContextMenu.Placement = PlacementMode.Bottom; // 设置显示位置为下方  
            myContextMenu.PlacementRectangle = new Rect(100, 100, 0, 0);//设置相对位置 x=100,y=100,宽度和高度为0
            myContextMenu.IsOpen = true;  //打开
        }

        private void ContextMenu_ContextMenuOpening(object sender, ContextMenuEventArgs e)
        {
            // 用来禁用右键打开菜单
            e.Handled = true; 
        }
    }
}

掌握WPF控件:熟练常用属性(二)_第4张图片

公众号“点滴分享技术猿

关注

你可能感兴趣的:(wpf)