第一章 第一课 Using WPF Control
2011-05-31 21:55
281 查看
■Explainwhatacontentcontrolis.
■DescribeanduseseveralcommonWPFcontrols.
■Useadependencyproperty.
■Createanduseanitemcontrolinyouruserinterface.
■Createamenu.
■Createatoolbar.
■Createastatusbar.
■Explainthepropertiesofacontrolthatmanagelayout.
■ExplainhowtousetheGridcontrol.
■ExplainhowtousetheUniformGridcontrol.
■ExplainhowtousetheStackPanelcontrol.
■ExplainhowtousetheWrapPanelcontrol.
■ExplainhowtousetheDockPanelcontrol.
■ExplainhowtousetheCanvascontrol.
■Configurecontrolsizing.
■Aligncontentatdesigntime.
■UsetheGridSplittercontrol.
WPFControl
1)derivesfromtheContentControlandhasContentproperty
2)ThetypeoftheContentpropertyisObject,soitcanacceptanyobjectascontent.How
contentisrendered,however,dependsonthetypeoftheobjectintheContentproperty
ForitemsthatdonotderivefromUIElement,theToStringmethodiscalled,andtheresulting
stringisrenderedasthecontrolcontent.ItemsthatderivefromUIElement,however,are
displayedascontainedwithinthecontentcontrol
3)contentcontrolscancontainonlyasinglenestedelementthereisnoinherentlimitonthenumberofnestedelementsthatthecontentcancontain
ViewCo
二、LabelControlandMnemonicKeys
Labelscontainbuilt-insupportformnemonickeys,whichmovethefocustoadesignated
controlwhentheAltkeyispressedwiththemnemonickey.
Themnemonickeyisspecifiedbyprecedingtheddesiredkeywiththeunderscore(_)symbolandappearsunderlinedatruntimewhentheAlt
keyispressed.wecandesignateatargetcontrolbysettingtheTargetpropertyoftheLabelcontrol
Samplecode:
<LabelName="Label1"Width="100"Target="{BindingElementName=testBox1}">PressAlt+_A</Label>
<TextBoxName="testBox1"Height="26"Width="100"></TextBox>
WhenuserpressAlt+A,Theinputfocuswillmovetotextbox.
三、ButtonControl
IsDefaultpropertyandtheIsCancelproperty
1)defaultproperty
WhenIsDefaultissettoTrue,thebutton’sClickeventisraised
oupressEnter
2)IsCancelproperty
WhenIsCancelissettoTrue,thebutton’sClickeventisraised
whenEscispressed.
3)ACCESSKEYS:
thebuttonwillbeclickedwhentheuserpressesAltandthatkeytogether
<Button>_ClickMe!</Button>
RADIOBUTTONCONTROL
YoucanhavemultiplegroupsinasinglecontainerbysettingtheGroupNameproperty
<RadioButtonGroupName="Group1"Name="RadioButton1"Height="22"VerticalAlignment="Top"Margin="15,10,0,0"HorizontalAlignment="Left"Width="76">Button1</RadioButton>
<RadioButtonGroupName="Group1"Name="RadioButton2"Margin="15,34,0,0"Height="22"VerticalAlignment="Top"HorizontalAlignment="Left"Width="76">Button2</RadioButton>
<RadioButtonGroupName="Group2"Name="RadioButton3"Margin="15,58,0,0"Height="21"HorizontalAlignment="Left"VerticalAlignment="Top"Width="76">Button3</RadioButton>
<RadioButtonGroupName="Group2"Name="RadioButton4"Margin="15,85,0,0"Height="22"HorizontalAlignment="Left"VerticalAlignment="Top"Width="76">Button4</RadioButton>
==
<StackPanelHeight="29"VerticalAlignment="Top">
<RadioButtonName="RadioButton1">Button1</RadioButton>
<RadioButtonName="RadioButton2">Button2</RadioButton>
</StackPanel>
<StackPanelHeight="34"Margin="0,34,0,0"VerticalAlignment="Top">
<RadioButtonName="RadioButton3">Button3</RadioButton>
<RadioButtonName="RadioButton4">Button4</RadioButton>
</StackPanel>
CHECKBOXCONTROL
TheIsCheckedpropertyisaBoolean?(bool?inC#)datatypesimilartotheBooleantypebutallowsanindeterminatestateaswell.Acheck
boxwillbeintheindeterminatestatewhenawindowfirstopens.
Othercontrol:
TextBlock
Image:
Scretch:None,Fill,Uniform,UniformFill
None:图片原始尺寸
Fill:适应ImageControl大小
Uniform:等比缩放适应ImageControl,ImageControl不一定被填满,但图片不会被剪切
UniformFill:等比缩放,并填充ImageControl。图片可能会被剪切
Progressbar
Textbox
Sliderbar
SettingtheTabOrderforControls
Bydefault,controlsintheuserinterfacewillreceivethefocus
fromTabkeypressesintheorderinwhichtheyaredefinedintheXAML
TabIndex
KeyboardNavigation.IsTabStop="False"tokeepacontrolfromreceivingfocuswhentheuserpressestheTabkey
ItemControls
ListBox
<ListBoxName="listbox1"VerticalAlignment="Top">
<CheckBoxName="Chk1">Option1</CheckBox>
<CheckBoxName="Chk2">Option2</CheckBox>
<CheckBoxName="Chk3">Option3</CheckBox>
<CheckBoxName="Chk4">Option4</CheckBox>
</ListBox>
<TreeView>
<TreeViewItemHeader="PizzaToppings">
<CheckBoxContent="Pepperoni"/>
<CheckBoxContent="Sausage"/>
<CheckBoxContent="Mushroom"/>
<CheckBoxContent="Tomato"/>
Lesson1:UsingWPFControlsCHAPTER115
</TreeViewItem>
<TreeViewItemHeader="SandwichItems">
<CheckBoxContent="Lettuce"/>
<CheckBoxContent="Tomato"/>
<CheckBoxContent="Mustard"/>
<CheckBoxContent="HotPeppers"/>
</TreeViewItem>
</TreeView>
<MenuHeight="22"Name="menu1"VerticalAlignment="Top"
HorizontalAlignment="Left"Width="278">
<MenuItemHeader="_File">
<MenuItemHeader="Open"/>
<MenuItemHeader="Close"/>
<MenuItemHeader="Save"Command="ApplicationCommands.Save"/>
</MenuItem>
</Menu>
<TextBox>
<TextBox.ContextMenu>
<ContextMenu>
<MenuItemHeader="Cut"Command="ApplicationCommands.Cut"/>
<MenuItemHeader="Copy"Command="ApplicationCommands.Copy"/>
<MenuItemHeader="Paste"Command="ApplicationCommands.Paste"/>
</ContextMenu>
</TextBox.ContextMenu>
</TextBox>
<ToolBarTrayName="toolBarTray1"Height="65"VerticalAlignment="Top">
<ToolBarName="toolBar1"Height="26"VerticalAlignment="Top">
<Button>Back</Button>
<Button>Forward</Button>
<Button>Stop</Button>
</ToolBar>
<ToolBar>
<TextBoxWidth="100"/>
<Button>Go</Button>
</ToolBar>
</ToolBarTray>
LayoutControls
■DescribeanduseseveralcommonWPFcontrols.
■Useadependencyproperty.
■Createanduseanitemcontrolinyouruserinterface.
■Createamenu.
■Createatoolbar.
■Createastatusbar.
■Explainthepropertiesofacontrolthatmanagelayout.
■ExplainhowtousetheGridcontrol.
■ExplainhowtousetheUniformGridcontrol.
■ExplainhowtousetheStackPanelcontrol.
■ExplainhowtousetheWrapPanelcontrol.
■ExplainhowtousetheDockPanelcontrol.
■ExplainhowtousetheCanvascontrol.
■Configurecontrolsizing.
■Aligncontentatdesigntime.
■UsetheGridSplittercontrol.
WPFControl
Individualcontrols
Itemcontrol
layoutcontrols
一、Contentcontrols:Lable,button,checkbox,radiobutton1)derivesfromtheContentControlandhasContentproperty
2)ThetypeoftheContentpropertyisObject,soitcanacceptanyobjectascontent.How
contentisrendered,however,dependsonthetypeoftheobjectintheContentproperty
ForitemsthatdonotderivefromUIElement,theToStringmethodiscalled,andtheresulting
stringisrenderedasthecontrolcontent.ItemsthatderivefromUIElement,however,are
displayedascontainedwithinthecontentcontrol
3)contentcontrolscancontainonlyasinglenestedelementthereisnoinherentlimitonthenumberofnestedelementsthatthecontentcancontain
ViewCo
//Summary: //RepresentsthebaseclassforallSystem.Windows.Controls.Buttoncontrols. [DefaultEvent("Click")] [Localizability(LocalizationCategory.Button)] publicabstractclassButtonBase:ContentControl,ICommandSource//Summary://Representsacontrolwithasinglepieceofcontentofanytype.[ContentProperty("Content")][Localizability(LocalizationCategory.None,Readability=Readability.Unreadable)][DefaultProperty("Content")]publicclassContentControl:Control,IAddChild{//Summary://IdentifiestheSystem.Windows.Controls.ContentControl.Contentdependency//property.////Returns://TheidentifierfortheSystem.Windows.Controls.ContentControl.Contentdependency//property.[CommonDependencyProperty]publicstaticreadonlyDependencyPropertyContentProperty;////Summary://IdentifiestheSystem.Windows.Controls.ContentControl.ContentStringFormat//dependencyproperty.////Returns://TheidentifierfortheSystem.Windows.Controls.ContentControl.ContentStringFormat//dependencyproperty.[CommonDependencyProperty]publicstaticreadonlyDependencyPropertyContentStringFormatProperty;////Summary://IdentifiestheSystem.Windows.Controls.ContentControl.ContentTemplatedependency//property.////Returns://TheidentifierfortheSystem.Windows.Controls.ContentControl.ContentTemplatedependency//property.[CommonDependencyProperty]publicstaticreadonlyDependencyPropertyContentTemplateProperty;////Summary://IdentifiestheSystem.Windows.Controls.ContentControl.ContentTemplateSelectordependency//property.////Returns://TheidentifierfortheSystem.Windows.Controls.ContentControl.ContentTemplateSelectordependency//property.[CommonDependencyProperty]publicstaticreadonlyDependencyPropertyContentTemplateSelectorProperty;////Summary://IdentifiestheSystem.Windows.Controls.ContentControl.HasContentdependency//property.////Returns://TheidentifierfortheSystem.Windows.Controls.ContentControl.HasContentdependency//property.[CommonDependencyProperty]publicstaticreadonlyDependencyPropertyHasContentProperty;//Summary://InitializesanewinstanceoftheSystem.Windows.Controls.ContentControl//class.[TargetedPatchingOptOut("PerformancecriticaltoinlinethistypeofmethodacrossNGenimageboundaries")]publicContentControl();//Summary://GetsorsetsthecontentofaSystem.Windows.Controls.ContentControl.////Returns://Anobjectthatcontainsthecontrol'scontent.Thedefaultvalueisnull.[Bindable(true)][CustomCategory("Content")]publicobjectContent{get;set;}////Summary://GetsorsetsacompositestringthatspecifieshowtoformattheSystem.Windows.Controls.ContentControl.Content//propertyifitisdisplayedasastring.////Returns://AcompositestringthatspecifieshowtoformattheSystem.Windows.Controls.ContentControl.Content//propertyifitisdisplayedasastring.[Bindable(true)][CustomCategory("Content")]publicstringContentStringFormat{get;set;}////Summary://GetsorsetsthedatatemplateusedtodisplaythecontentoftheSystem.Windows.Controls.ContentControl.////Returns://Adatatemplate.Thedefaultvalueisnull.[Bindable(true)][CustomCategory("Content")]publicDataTemplateContentTemplate{get;set;}////Summary://Getsorsetsatemplateselectorthatenablesanapplicationwritertoprovide//customtemplate-selectionlogic.////Returns://Adatatemplateselector.Thedefaultvalueisnull.[CustomCategory("Content")][Bindable(true)][DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]publicDataTemplateSelectorContentTemplateSelector{get;set;}////Summary://GetsavaluethatindicateswhethertheSystem.Windows.Controls.ContentControl//containscontent.////Returns://trueiftheSystem.Windows.Controls.ContentControlhascontent;otherwise//false.Thedefaultvalueisfalse.[ReadOnly(true)][Browsable(false)]publicboolHasContent{get;}////Summary://Getsanenumeratortothecontentcontrol'slogicalchildelements.////Returns://Anenumerator.Thedefaultvalueisnull.protectedinternaloverrideIEnumeratorLogicalChildren{get;}
二、LabelControlandMnemonicKeys
Labelscontainbuilt-insupportformnemonickeys,whichmovethefocustoadesignated
controlwhentheAltkeyispressedwiththemnemonickey.
Themnemonickeyisspecifiedbyprecedingtheddesiredkeywiththeunderscore(_)symbolandappearsunderlinedatruntimewhentheAlt
keyispressed.wecandesignateatargetcontrolbysettingtheTargetpropertyoftheLabelcontrol
Samplecode:
<LabelName="Label1"Width="100"Target="{BindingElementName=testBox1}">PressAlt+_A</Label>
<TextBoxName="testBox1"Height="26"Width="100"></TextBox>
WhenuserpressAlt+A,Theinputfocuswillmovetotextbox.
三、ButtonControl
IsDefaultpropertyandtheIsCancelproperty
1)defaultproperty
WhenIsDefaultissettoTrue,thebutton’sClickeventisraised
oupressEnter
2)IsCancelproperty
WhenIsCancelissettoTrue,thebutton’sClickeventisraised
whenEscispressed.
3)ACCESSKEYS:
thebuttonwillbeclickedwhentheuserpressesAltandthatkeytogether
<Button>_ClickMe!</Button>
RADIOBUTTONCONTROL
YoucanhavemultiplegroupsinasinglecontainerbysettingtheGroupNameproperty
<RadioButtonGroupName="Group1"Name="RadioButton1"Height="22"VerticalAlignment="Top"Margin="15,10,0,0"HorizontalAlignment="Left"Width="76">Button1</RadioButton>
<RadioButtonGroupName="Group1"Name="RadioButton2"Margin="15,34,0,0"Height="22"VerticalAlignment="Top"HorizontalAlignment="Left"Width="76">Button2</RadioButton>
<RadioButtonGroupName="Group2"Name="RadioButton3"Margin="15,58,0,0"Height="21"HorizontalAlignment="Left"VerticalAlignment="Top"Width="76">Button3</RadioButton>
<RadioButtonGroupName="Group2"Name="RadioButton4"Margin="15,85,0,0"Height="22"HorizontalAlignment="Left"VerticalAlignment="Top"Width="76">Button4</RadioButton>
==
<StackPanelHeight="29"VerticalAlignment="Top">
<RadioButtonName="RadioButton1">Button1</RadioButton>
<RadioButtonName="RadioButton2">Button2</RadioButton>
</StackPanel>
<StackPanelHeight="34"Margin="0,34,0,0"VerticalAlignment="Top">
<RadioButtonName="RadioButton3">Button3</RadioButton>
<RadioButtonName="RadioButton4">Button4</RadioButton>
</StackPanel>
CHECKBOXCONTROL
TheIsCheckedpropertyisaBoolean?(bool?inC#)datatypesimilartotheBooleantypebutallowsanindeterminatestateaswell.Acheck
boxwillbeintheindeterminatestatewhenawindowfirstopens.
Othercontrol:
TextBlock
Image:
Scretch:None,Fill,Uniform,UniformFill
None:图片原始尺寸
Fill:适应ImageControl大小
Uniform:等比缩放适应ImageControl,ImageControl不一定被填满,但图片不会被剪切
UniformFill:等比缩放,并填充ImageControl。图片可能会被剪切
Progressbar
Textbox
Sliderbar
SettingtheTabOrderforControls
Bydefault,controlsintheuserinterfacewillreceivethefocus
fromTabkeypressesintheorderinwhichtheyaredefinedintheXAML
TabIndex
KeyboardNavigation.IsTabStop="False"tokeepacontrolfromreceivingfocuswhentheuserpressestheTabkey
ItemControls
ListBox
<ListBoxName="listbox1"VerticalAlignment="Top">
<CheckBoxName="Chk1">Option1</CheckBox>
<CheckBoxName="Chk2">Option2</CheckBox>
<CheckBoxName="Chk3">Option3</CheckBox>
<CheckBoxName="Chk4">Option4</CheckBox>
</ListBox>
<TreeView>
<TreeViewItemHeader="PizzaToppings">
<CheckBoxContent="Pepperoni"/>
<CheckBoxContent="Sausage"/>
<CheckBoxContent="Mushroom"/>
<CheckBoxContent="Tomato"/>
Lesson1:UsingWPFControlsCHAPTER115
</TreeViewItem>
<TreeViewItemHeader="SandwichItems">
<CheckBoxContent="Lettuce"/>
<CheckBoxContent="Tomato"/>
<CheckBoxContent="Mustard"/>
<CheckBoxContent="HotPeppers"/>
</TreeViewItem>
</TreeView>
<MenuHeight="22"Name="menu1"VerticalAlignment="Top"
HorizontalAlignment="Left"Width="278">
<MenuItemHeader="_File">
<MenuItemHeader="Open"/>
<MenuItemHeader="Close"/>
<MenuItemHeader="Save"Command="ApplicationCommands.Save"/>
</MenuItem>
</Menu>
<TextBox>
<TextBox.ContextMenu>
<ContextMenu>
<MenuItemHeader="Cut"Command="ApplicationCommands.Cut"/>
<MenuItemHeader="Copy"Command="ApplicationCommands.Copy"/>
<MenuItemHeader="Paste"Command="ApplicationCommands.Paste"/>
</ContextMenu>
</TextBox.ContextMenu>
</TextBox>
LayoutControls
相关文章推荐
- How To Start Using Wpf-Ribbon Control
- WPF Control Development unleashed 翻译第一章
- Using Beyond Compare with Version Control Systems under OSX
- Wpf UserControl使用 KeyBinding,失效问题
- WPF程序指南第一章最后一个例子 按作者意思增加resizemode和背景颜色
- Audio Gain Control Using Digital Potentiometers
- using backup controlfile 和 until cancel区别
- WPF集合控件实现分隔符(ItemsControl Separator)
- Control keys for quick using PC
- wpf如何获取control template里的元素
- 评率控论文“A New Rate Control Scheme Using Quadratic Rate Distortion Model”
- WPF中的数据模板使用方式之一:ContentControl、ContentTemplate和TemplateSelector的使用
- 项目管理实践【三】每日构建【Daily Build Using CruiseControl.NET and MSBuild】
- WPF中的ControlTemplate( 控件模板 )
- Wpf UserControl 截图
- Recommended Practices for WPF Custom Control Developers
- using Bash script to control LED with WiringPi on Raspberry Pi
- WPF Style-ControlTemplate 使用
- WPF中用户控件对比自定义控件(UserControl VS CustomControl)
- ORA-01610: recovery using the BACKUP CONTROLFILE option must be done