WPF控件Wpf中把控件的特性和控件的显示方式分开。控件在用户界面上的样子是由控件模板决定的,wpf为每个控件提供了默认的控件模板和相应的特 性,但是用户可以用自己的控件模板代替默认的控件模板,所以每个控件都可以成为开发者自己个性化的控件。何为控件?它是相对独立的模块它 具有对用记输入反应的能力每个控件具有特定图形表现形式(WPF把控件的特性和显示形式分开了)WPF中的控件基本上可以分以下4类内容控 件(ContentControls)条目控件(ItemsControls)文本控件(TextControls)范围控件 (RangeControls)1内容控件它只能有一个直的接子控件(Content),如果把一个没有内容的控件放到Content中 去,wpf会调用Object类的ToString方法,从面显示字符串。如果Content是UI元素,wpf就会调用OnRender 方法,从面让UI元素在自己在控件中画出。1.1.框架控件(Frame)它的主要作用是把其中的内容和界面上的其它部分分开,它里面可以 是任体东西,但只能有一个直接子控件。虽然Frame可以是其它控件的子控件,但是其宿主包容器的相关属性不传递到Frame中,即起到隔 离作用。microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://sche mas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.micro soft.com/expression/blend/2008"xmlns:mc="http://schemas.openxml formats.org/markup-compatibility/2006"xmlns:local="clr-namespac e:Frame_隔离"mc:Ignorable="d"FontSize="20"Title="MainWindow" Height="350"Width="525">DefinitionWidth="285"/>.ColumnDefinitions>="1"> 显示效果:由此可见,Frame隔断了相关属性的传递使用Frame的主要用途是 在其中嵌入HTML内容,在Frame中加入HTML只需要设置它的Source属性即可显示HTML数据.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2 006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/win fx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/b lend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-co mpatibility/2006"xmlns:local="clr-namespace:Frame_显示HTML数据"mc :Ignorable="d"Title="MainWindow"Height="350"Width="525">meSource="https://hao.360.cn/?wd=1001">1.2.WP F按钮(Button)它是从BaseButton抽象类中派生出来,在BaseButton中定义了以下4个属性属性句功能描述Clic kModeClickMode枚举,指明何时产生Click事件。Hover=鼠标移动到按钮上时,Press=在按钮接下鼠标左 键时Release=松开时?IsFocused只读,若为真,则该按按钮具有输入焦点IsMouseOver只读,若为真,则鼠标位于 按钮上IsPressed只读,若为真,则按钮被按下privatevoidButton_Click(objectsender ,RoutedEventArgse){MessageBox.Show("OnButtonClick");}owx:Class="Button_ClickMode.MainWindow"xmlns="http://schemas.m icrosoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schem as.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.micros oft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlf ormats.org/markup-compatibility/2006"xmlns:local="clr-namespace :Button_ClickMode"mc:Ignorable="d"Title="MainWindow"Height=" 350"Width="525">utton_Click">Hoverton_Click">Presston_Click">Release1.3.拔动按钮(Toggle Button)ToggleButton中的事件事件名发生条件Checked当IsChecked=true时发生UnChecke d当IsChecked=False时发生Indeterminate当IsChecked=NULL时发生1.4CheckB ox控件用在可以有多个选项的地方,CheckBox并没有增加任何属性,只为ToggleButton提供外观。1.5RadioBu tton控件多个选项中只能选一个,同一组选项通过GroupName来标记upName="1">12ton>3pName="3">41.6RepeatButton可以在按下时,不停的 发出Click事件它增加了两个属性Delay(ms)设置用户按下按钮多长时间后,开始重复发出Click事件,>0Interv al(ms)每次发出Click事件的间隔,>01.7带有标题栏的内容控件(HeaderedConentControl) 它派生出三个类,ExpanderGroupBox和TabItem(TabItem和TabCtrl一起使用),HeaderedC ontentControl除了Content之外还有一个Header属性,和Content一样,它也是一个Object类型,换句话 说,.net的任对象都可以成为Header.我们通常不会直接使用HeaderedContentControl本身,而是使用它的两个 派生类:GroupBoxExpander1.8分组框(GroupBox)最常用的地方是给CheckBox或RadioBox控件 分组1.9展开控件(Expander)在收缩时只展示标题,在展开时才会显示Content1.10标签控件(Label)主要用于 显示字符串,在wpf中TextBlockt和TextBox等都可以用来显示字符串,标签控件有别于它们的主要功能主要有以下两点:在默 认情况下,Label是只读的,颜色是灰色的内置了一个AccessText控件,可以直接设定热键到目标控件ss="Label_AccessText.MainWindow"xmlns="http://schemas.microsoft .com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.micro soft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/ expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.o rg/markup-compatibility/2006"xmlns:local="clr-namespace:Label_A ccessText"mc:Ignorable="d"Title="MainWindow"Height="350"Wid th="525">Code}">邮政编码(_P)< /StackPanel>按下Alt+P后,输入焦点会跳到PostalCode上1.11为按钮设置热键tonClick="Button_Click">我有热键B(_B)privatevoidButton_C lick(objectsender,RoutedEventArgse){MessageBox.Show("Test"); }1.12ToolTip能常是程序员用来的某些UI元素上显示帮助信息,ToolTip被定义在了FrameworkElement 类和FrameWorkContent中,这意味着不仅所有WPF控件能使用ToolTip控件而且图形和文档也可以使用ToolTip, 其交次ToolTip和其它Content控件一样,其中也可以包含任何WPF控件及组合。钮">Button使用ToolTip需要注意以下两点:1.虽然是一个控件,但本身并不具备输入功能它不能像其它控件那样作为其它控件 的子控件,它必须和控件的ToolTip属性相连通过ToolTipService类控制ToolTip:lTipService.HorizontalOffset="0"ToolTipService.VerticalOffset=" 0">…使用ToolTip主要是为保持多个控件的ToolTip属性一致性,若只使用一个控件,则可以直接 使用ToolTip的相关属性。1.13ScrollViewer当窗口中的内容比窗口要大时,通常要在窗口中显示滚动条。和所有Con tent控件一样,它只能直接包含一个子控件。"1000">Button2.条目控件WPF的另一大类控件就是ItemsCont rol,它只接从Control类中派生出来,写内容控件不同,ItemsControls中含有Items属性,这个属性具有ItemC ollection类型。在内容控件中可以填充任何一个Object类型;在Items属性中则可以加入任何一个Object类型的对象。 WPF显示Items属性中的对象时,如果这个对象是UI元素,就直接调用UI元素的OnRender方法;如果这个对象不是UI元素,W PF就会创建一个TextBlock,并在TextBlock中显示这个对象的Tostring方法所返回的结果;它除了有可以加入任何对 象的Items属性外,ItemsControl类中还包含有一个重要的属性ItemsSource.这个属性是用来作数据绑定的,一旦我 们使用的ItemsSource后Items属性就会被置为null;Items与ItemsSource只能选一个来用,并且It emsSource的优先级更高。以下示出了ItemsControl及其派生类的结构图。从对象组件的角度看,基本上可以把这些类分成两 大类,一类是可以放入条目的条目包容器;另一类是条目本身。条目又可以分为带标题栏的条目和不带标题栏的条目。有些条目是内容控件,如Co mboBoxItem,TabItem等。下表列出了条目包容器类及相应的条目类,虽然ItemsControl类中的属性中也可以加入任 .NET对象,但对某个具体的ItemsControl,其所包含的条目类又是相对稳定的,比如表中的ComboBox和ComboBox .这些条目为控件提供了相对稳定的条目条目包容器类条目类ComboBoxComboBoxItemContextMenuMenuIte mListBoxListBoxItemListViewListViewItemMenuMenuItemStatusBarStatu sBarItemTabControlTabItemTreeViewTreeViewItem2.1Menu菜单是最常用的一个控件, 常位于应用程序窗口的顶部。每个菜单里面都包含有菜单的条目(MenuItem),MenuItem是一个带有标题的条目控件,它从Hea deredItemControl类中派生出来。HeaderedItemControl类中有一个类型为Object的属性:Heade r,在菜单条目中通常指它设置为字符串。有时候菜单条目下还会有子菜单,子菜单的条目下还会有下一层子菜单。技术上可以实现多级菜单,但是 不建议使用。现在Ribbon已经取代了菜单。菜单条目支持类似于CheckBox的选中标记,是bool类型.IsCheckable属 性表明这个条目是否支持选中标记,若设置为true,则表明可以设置选择标记。IsChecked表明这个条目的选中状态,它也是bool 类型,当这个值为true时,这个条目上显示一个选中的标记。菜单条目的常用属性如下表示:属性名功能Icon用来显示与菜单相关联的图像 ,类型为Object,可以显示任何图形InputGestureText用来显示热键,如word里的复制功能菜单条目显示“Ctrl +C”,它只显示并没有移植热键功能。IsCheckable表明菜单条目是否可以设置IsChecked属性IsChecked若Is Checked为true,则该条目显示选中标记IsPressed表明用户是否按下这个条目Command菜单条目可以直接和命令相连, 通常和WPF中已定义的ApplicationCommands相连,也可以自定义Command下拉菜单例子:ass="Menu_test.MainWindow"xmlns="http://schemas.microsoft.com/w infx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.c om/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expres sion/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/mar kup-compatibility/2006"xmlns:local="clr-namespace:Menu_test"m c:Ignorable="d"Title="MainWindow"Height="350"Width="525">ckPanel>w>弹出菜单弹出菜单需要附加在UI元素的ContextMenu属性上。FrameworkElement里面有一个ContextMe nu属性,程序员所要做的事就是构建弹出菜单,并在相应的UI元素上设置ContextMenu属性。由于FrameworkElemen t是所有UI元素的基类,所以,WPF在广泛的范围内支持弹出菜单。2.2ToolBar使用WPF工具条要涉及两个类:ToolBar Tray和ToolBar.ToolBarTray含有多个ToolBar,ToolBar包含多具WPF控件。ToolBarTray负 责工具条的排版,Background属性用来设定工具条的背景色,Orientation用来确定工具条的方向,它可以取水平(Hori zontal)或垂直(Vertical)两值当toolBarTray里含有两个或两个以上的工具条时,需要设置工具条的Band属性, 这个属性用来指出工具条在ToolBarTray里出现的行或列。用自然数1,2,3…来表示。如果在同一行或同一列中,有两个或两个以上 的工具条,这时我们还要设置BandIndex属性。BandIndex属性用来指出工具条在某个行或某个列中出的位置。工具条中的另外两 属性:HasOverFlowItems和IsOverFlowOpen.这两个属性用来表示工具条是否溢出,以及溢出的工具条是否可见。 当工具条的宽度或高度大于工具条所能显示的高度或宽度时,工具条就只能显示其中的部分控件,这时工具条处在溢出状态,HasOverFlo wItems属性为True.若有的控件比较重要,希望这个控件不被溢出时,可以设置工具条中的OverflowMode属性为Never ,这个属性是一个附加属性,所以可以把它附加到工具条中的任何一个控件上。Top"Orientation="Horizontal"> |
|