wpf 研习1-24小时自学wpf6

Data Binding

 

markup extensions(quotation marks are not allowed)-{Binding ..}(wpf属性系统的重要标志!)


<TextBlock Text=”{Binding ElementName=SampleText, Path=Text}”
                  FontFamily=”{Binding ElementName=FontList,
                  Path=SelectedItem}”
                  FontSize=”10”
                  TextWrapping=”Wrap”
                  Margin=”0 0 0 4” />

 

(property:ElementName-Path is a set of name-value,or object-property)

 
<StackPanel>
  <TextBlock Text=”This is fun!”
                    FontSize=”{Binding ElementName=mySlider,Path=Value}”
                    HorizontalAlignment=”Center” />
  <Slider x:Name=”mySlider”
                 Minimum=”8”
                 Maximum=”64” />
</StackPanel>

 

 

two-way data binding

Property-Mode,its value determines how the data will flow between the data source and the target;

default:TextBox-TwoWay,TextBlock-OneWay;

 

Modes for Data Binding
Name Description
OneWay Changes to the source will update the target.
TwoWay

Changes to the source will update the target, and changes on the target will update the source.

OneTimeThe target is set only when the application starts or when the data context is changed.
OneWayToSource Changes to the target will update the source.
  
  

 

 

X:Static-search for StaticExtension,used to retrieve data from static value members on classes;

 

DataContext-“context” or the “starting point” from which the data binding is taking place

all the controls in WPF inherit from FrameworkElement;DataContext is the property of FrameworkElement;

 

"ElementName-Path" is explicitly apporach for providing a context;

a control’s DataContext is inherited from its parent;

 

对比两段代码的效果:

<ListBox x:Name=”FontList”
                  DataContext=”{x:Static Fonts.SystemFontFamilies}”
                  DockPanel.Dock=”Left”
                  ItemsSource=”{Binding}”
                  ToolTip=”{Binding Path=Count, Mode=OneTime}”
                  Width=”160” />

 

<ListBox x:Name=”FontList”
                  DataContext=”{x:Static Fonts.SystemFontFamilies}”
                  DockPanel.Dock=”Left”
                  ItemsSource=”{Binding}”
                  Width=”160”>
           <ListBox.ToolTip>
                <ToolTip>
                   <StackPanel Orientation=”Horizontal”>
                      <TextBlock Text=”{Binding Path=Count,Mode=OneTime}”/>
                      <TextBlock Text=” fonts are installed.”/>
                   </StackPanel>
                </ToolTip>
           </ListBox.ToolTip>
</ListBox>


 

 

 

WPF property system

allows properties to participate in data binding, styling, animation,and several other exciting features;

WPF特征编程的源头;

 

dependency property-用WPF属性系统注册的属性(是否是依赖属性可查官方文档)

 

-include metadata about the property,such as the default value for the property, the default binding mode, and other miscellaneous items;

-provide automatic change notification;

-a property must be a dependency property to be the target of a data binding;

-data sources are not required to be dependency properties;

 

change notification mechanism:

object code method 1

-property setter,raise a propertyname+Changed event;WPF automatically checks for this event and updates data bindings accordingly;

object code method 2

-class owns property,implement INotifyPropertyChanged;

 

以下等效:

<!--xaml形式-->

<TextBox>
   <TextBox.Text>
       <Binding Path=”FirstName  Mode=”TwoWay” />
   </TextBox.Text>
</TextBox>

 

<!--markup extension形式-->

<TextBox Text=”{Binding Path=FirstName,Mode=TwoWay}” />

 

 

 备注:Label标签的Target属性,是指Label连接的目标控件。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值