微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

silverlight绑定总结

两种大类:

普通绑定,数据源通过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=”currentFolderDockPanel.Dock=”TopText=”{Binding ElementName=treeView, Path=SelectedItem.Header}Background=”AliceBlueFontSize=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,否则运行时异常。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐