两种大类:
普通绑定,数据源通过datacontext指定。并且会对上级控件搜索数据源
datagrid等list类型绑定,数据源通过itemSource指定。
常见的使用Binding的代码:
C#
Binding binding = new Binding();
// Set source object
binding.Source = treeView;
// Set source property
binding.Path = new PropertyPath("SelectedItem.Header");
// Attach to target property
currentFolder.SetBinding(TextBlock.TextProperty, binding);
XAML:
<TextBlock x:Name=”currentFolder” DockPanel.Dock=”Top”
Text=”{Binding ElementName=treeView, Path=SelectedItem.Header}”
Background=”AliceBlue” FontSize=”16”/>
(1)普通文本等绑定:
<TextBox x:Name="txtProductName" Grid.Column="1" Margin="25,35,43,58" TextWrapping="Wrap"
Text="{Binding ProductName}"/>
代码:
Product product = new Product()
{
ProductName="Audi",
ProductPrice=50000.0
};
txtProductName.DataContext = product;
(2)绑定的延生属性特点:
// 声明 public static IList<Graphic> features撤退路线;Grphic实际是一个表的行,有多个featrue.Attributes["NAME"]
tip.canvas.DataContext =MapClient.FeatureClass.features防汛人员[0];
<sdk:Label Content="{Binding Attributes[NAME]}" RenderTransformOrigin="0.128,0.381" Foreground="#FFFF2900" Margin="68,11,3,0"/>
(3) 控件元素绑定:绑定的实质是对类的操作。所以对于控件的属性,也可以绑定
//通过 ElementName指定控件名
//通过Path指定控件的具体属性值
<esri:TimeSlider x:Name="MyTimeSlider"
Loop="True" PlaySpeed="0:0:0.15"
TimeMode="TimeExtent"
MinimumValue="{Binding ElementName=MyMap, Path=Layers[MyHurricaneFeatureLayer].TimeExtent.Start, Mode=OneWay}"
MaximumValue="{Binding ElementName=MyMap, Path=Layers[MyHurricaneFeatureLayer].TimeExtent.End, Mode=OneWay}"
Value="2000/08/04 01:00:00 UTC,2000/08/07 01:00:00 UTC"
Height="20" />
ElementName: 源为一个元素(Element),这里用的是此元素中设置的Name属性。
Source:以object作为源。 < TextBlock Text= "{Binding Source={StaticResource myDataSource}, Path=PersonName}" />
RelativeSource: 源 相对于绑定目标的位置。
Binding.Mode 指示源和目标间数据流的方向。
OneWay 源更新时,目标也更新
TwoWay 源更新时目标也更新,或者目标更新时同时更新源
OneTime 仅当应用程序启动时或 DataContext 进行更改时更新目标属性。绑一次就不更维护更新,目标相当于源的一次性镜像
OneWayToSource 目标更新时更新源,和OneWay相反
大部分WPF自带的控件的dependency property默认的是OneWay,像TextBox.Text默认的是TwoWay。
值得注意的事,只读属性只能设置成OneWay,不能是TwoWay,否则运行时异常。
本文详细介绍了WPF中的数据绑定技术,包括普通绑定与datagrid等list类型的绑定,并提供了丰富的示例代码,涵盖文本绑定、控件元素绑定及list绑定等多种场景。
1万+

被折叠的 条评论
为什么被折叠?



