1. 程式人生 > >wpf筆記(讀一線碼農8天入門wpf)

wpf筆記(讀一線碼農8天入門wpf)

type ret adding combobox 延伸 new listbox pen value

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)

wpf筆記(讀一線碼農8天入門wpf)