silverlight绑定总结

本文详细介绍了WPF中的数据绑定技术,包括普通绑定与datagrid等list类型的绑定,并提供了丰富的示例代码,涵盖文本绑定、控件元素绑定及list绑定等多种场景。

两种大类:

普通绑定,数据源通过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" />

(4)gridview 等list绑定:
            grid2.CTLXDataGrid.ItemsSource =FeatureClass.features防汛人员;
            <localGrid:AutoFillDataGrid  x:Name="DataGrid1" AutoGenerateColumns="False" HeadersVisibility="All" Background="White" >
                <localGrid:AutoFillDataGrid.Columns>
                     <data:DataGridTextColumn Binding="{Binding Attributes[路线名称]}" Header="路线名称" />
                    <data:DataGridTextColumn Binding="{Binding Attributes[转移时间]}" Header="转移时间" />
                    <data:DataGridTextColumn Binding="{Binding Attributes[长度路线]}" Header="路线长度(公里)"/>
ata:DataGridTextColumn Binding="{Binding Attributes[撤退目标安全转移区]}" Header="撤退目标安全转移区"/>
                </localGrid:AutoFillDataGrid.Columns>
                </localGrid:AutoFillDataGrid.Columns>
            </localGrid:AutoFillDataGrid>
注:Text=”{Binding 路线名称}” 等效于 Text=”{Binding Path=路线名称}”。
 (5)数据源的分类:
有三个属性用来设置源:ElementName(string)、Source(Object) 和 RelativeSource(RelativeSource)。 注:这三个只能指定一个,否则异常。
ElementName: 源为一个元素(Element),这里用的是此元素中设置的Name属性。
Source:以object作为源。 < TextBlock  Text= "{Binding Source={StaticResource myDataSource}, Path=PersonName}" />
RelativeSource: 源 相对于绑定目标的位置。
(6)绑定模式:

Binding.Mode 指示源和目标间数据流的方向。

OneWay 源更新时,目标也更新
TwoWay 源更新时目标也更新,或者目标更新时同时更新源
OneTime 仅当应用程序启动时或 DataContext 进行更改时更新目标属性。绑一次就不更维护更新,目标相当于源的一次性镜像
OneWayToSource 目标更新时更新源,和OneWay相反

大部分WPF自带的控件的dependency property默认的是OneWay,像TextBox.Text默认的是TwoWay。
值得注意的事,只读属性只能设置成OneWay,不能是TwoWay,否则运行时异常。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值