wpf笔记(读一线码农8天入门wpf)
****************基础****************
●引入命名空间 xmlns:local="clr-namespace:DataTemplate"
●StaticResource静态资源相当于常量,编译后值不改变 {StaticResource ResourceKey=mystyle}
●DynamicResource动态资源相当于变量,编译后值可改变 {DynamicResource ResourceKey=mystyle}
●Binding绑定 Text="{Binding ElementName=textBox1, Path=Text}"
●TemplateBinding模板绑定
****************样式Style****************
样式主要对外观缝缝补补,改个颜色,字体大小等
●Style类似css
●TargetType定义一类控件的外观 <Style TargetType="Button">
●x:Key定义一个ID供单独调用 <Style x:Key="mystyle" TargetType="Button">
●BaseOn继承 <Style x:Key="childStyle" TargetType="Button" BasedOn="{StaticResource ResourceKey=baseStyle}">
●Triggers触发器定义特定事件发生时的外观
●MultiTrigger定义多个特定事件发生时的外观
●DataTrigger定义控件特定状态下的外观,如radio的checked
●MultiDataTrigger定义控件多个状态同时存在时的外观
****************模板Template****************
模板重新定义控件的外观,颠覆原外观(当然还可以继承)
●ControlTemplate模板控制控件外观 <ControlTemplate x:Key="rect" TargetType="{x:Type CheckBox}">
●ContentPresenter继承控件原模板属性 <ContentPresenter/> Margin绑定到Padding<ContentPresenter Margin="{TemplateBinding Padding}" />
●Trigger模板中也可以有Triggers
●Style和ControlTemplate可以混合使用
●DataTemplate模板控制数据显示方式 <DataTemplate x:Key="rect">
●ItemsPanelTemplate模板控制条目控件ListBox,Menu,StatusBar等 <ItemsPanelTemplate x:Key="items">
●HierarchicalDataTemplate模板控制分层数据结构的控件
****************数据绑定****************
●控件到控件的绑定 Text="{Binding ElementName=scrollBar1, Path=Value, Mode=OneWay}"
绑定模式有四种
1:OneWay Source影响Target,但是Target却影响不到Source。
2:OneWayToSource Target影响Source,而Source却影响不到Target。
3:TwoWay Source与Target相互影响。
4:OneTime 在OneWay的基础上延伸了一个OneTime,仅绑定一次。
●.net对象与控件的绑定
List<Student> list = new List<Student>();
list.Add(new Student() { Name = "hxc", Age = 20 });
listView1.ItemsSource = list;
<GridViewColumn Header="姓名" DisplayMemberBinding="{Binding Name}"/>
注意IValueConverter的使用,可以控制特定行颜色等,具体使用搜索IValueConverter
●.net方法与控件的绑定
public class Student
{
//前台要引用的方法
public string GetName()
{
return "一线码农";
}
}
<ObjectDataProvider x:Key="Test" ObjectType="{x:Type local:Student}" MethodName="GetName"></ObjectDataProvider>
<TextBlock Text="{Binding Source={StaticResource ResourceKey=Test}, Mode=OneWay}"/>
●验证数据
实现ValidationRule接口,然后写上自定义的验证逻辑
****************细说控件****************
●内容控件 全部基于ContentControl、
一、ButtonBase:1.Button,2.RepeatButton(重复执行click事件),3.GridViewColumnHeader,4.ToggleButton(radio,check)
二、HeaderedContentControl:1.Expander,2.GroupBox,3.TabItem
三、ToolTip 不能独立的作为一个控件使用,而是与其他具体控件的ToolTip联合使用。ToolTipSerivce类,可用于设计Tooltip显示的相对位置,提示时间
四、ScrollViewer
●条目控件 继承自ItemsControl 两个重要属性Items(ItemCollection类型)和ItemsSource(IEnumerable类型)
一、MenuBase:1.Menu,2.ContextMenu
二、Selector:1.Listbox,2.ComboBox,3.TabControl,4.ListView
三、StatusBar
四、TreeView
●文本控件 TextBox,RichTextBox,PasswordBox
●范围控件 基于RangeBase,重要属性LargeChange,SmallChange,Maximum,Minimum
一、ScrollBar
联动<ScrollBar Name="test" Orientation="Horizontal" Maximum="100" Minimum="5" SmallChange="2" Height="17" Width="186" />
<TextBox Name="txtScrollValue" Text="{Binding ElementName=test, Path=Value}"/>
二、ProgressBar IsIndeterminate=true(无限滚动进度条)
****************画刷****************
基于Brush,重要属性Opacity,RelativeTransform,Transform
●SolidColorBrush 实心画刷
●GradientBrush 渐变画刷
1:LinearGradientBrush(线性渐变画刷)
<Rectangle.Fill>
<LinearGradientBrush StartPoint="0,0" EndPoint="1,0">
<GradientStop Color="Yellow" Offset="0.5"/>
<GradientStop Color="Green" Offset="1"/>
</LinearGradientBrush>
</Rectangle.Fill>
2:RadialgradientBrush(圆形渐变画刷)
<Rectangle.Fill>
<RadialGradientBrush GradientOrigin="0.5,0.5" Center="0.5,0.5" RadiusX="0.5" RadiusY="0.5">
<RadialGradientBrush.GradientStops>
<GradientStop Color="Yellow" Offset="0"/>
<GradientStop Color="Red" Offset="0.25"/>
<GradientStop Color="Blue" Offset="0.75"/>
<GradientStop Color="LimeGreen" Offset="1"/>
</RadialGradientBrush.GradientStops>
</RadialGradientBrush>
</Rectangle.Fill>
●TileBrush
1:ImageBrush(图像画刷)
<Grid.Background>
<ImageBrush x:Name="landBrush" ImageSource="C:\Users\Administrator\Desktop\weibo\64512.gif"/>
</Grid.Background>
2:VisualBrush(控件画刷) 任何控件都可以作为画刷
3:DrawingBrush(自定义画刷)
****************补充****************
●UserControl(用户控件)
UserControl类似一个Window,可以将几个控件组合起来,成为一个用户控件,以便重复使用
●ResourceDictionary(资源字典)可以共享定义好的样式
●Window生命周期 Initialized,Activated,Loaded,ContentRendered,Deactivated,GotFocus,LostFocus,GotKeyboardFocus,LostKeyboardFocus,Closing,Closed
●属性更改通知(INotifyPropertyChanged)
●依赖属性(DependencyProperty)