Silverlight 4 中数据绑定发生的变化

简介: DependencyObject Binding 在Silverlight之前的版本中,其支持的元素绑定只是允许绑定继承自FrameworkElement类下元素,但是比如一些形变比如Transformations就不能绑定了。
DependencyObject Binding
在Silverlight之前的版本中,其支持的元素绑定只是允许绑定继承自 FrameworkElement类下元素,但是比如一些形变比如 Transformations就不能绑定了。现在数据绑定也可以绑定继承自 DependencyObject下的任何元素。

 

==============================
    <Grid x:Name="LayoutRoot"
      Background="White">
        <StackPanel Width="400" Margin="0,22,0,0">
            <StackPanel.RenderTransform>
                <CompositeTransform 
        ScaleX="{Binding Value,ElementName=stretcher}"
        ScaleY="{Binding Value,ElementName=stretcher}" />
            </StackPanel.RenderTransform>
         <Button Content="Button"/>
         <Button Content="Button"/>
         <Button Content="Button"/>
         <Button Content="Button"/>
         <Button Content="Button"/>
        </StackPanel>
        <Slider Minimum=".5"
          Maximum="4"
          x:Name="stretcher"
          Value="1" VerticalAlignment="Top" />
    </Grid>
=================================


String Formatting

新版的Silverlight4中新增加了格式化字符串的能力。在这之前如果要做一个数据格式化不得不使用一个Converter来格式化字符串。现在可以使用扩展标记StringFormat来做一些比如日期、货币等的格式化。

在VS2010中也提供了可视化的支持。
=================================
    <Grid x:Name="LayoutRoot" Background="White">
        <TextBox Text="{Binding ReleaseDate, StringFormat='yyyy年MM月dd日', 
                        Mode=TwoWay}" 
                 Margin="0,30,0,0" 
                 Height="26" 
                 VerticalAlignment="Top" d:LayoutOverrides="Height" />
        <TextBlock Text="{Binding Price, StringFormat='c'}" 
                   Margin="0,0,0,0" 
                   Height="26" VerticalAlignment="Top" />
    </Grid>
=================================


Null and Fallback Values

在某些特殊的情况下,数据有可能加载失败。数据绑定中有新增加了两个宽展标记TargetNullValue、FallbackValue,TargetNullValue这个标记表示了当绑定值是null的时候显示的值。FallbackValue则是在数据未绑定时显示的值。
=================================

    <Grid x:Name="LayoutRoot" Background="White">
        <TextBlock Text="{Binding Developer,
            TargetNullValue='(暂无)'}" 
                   Height="26" Margin="0,100,0,0" 
                   VerticalAlignment="Top" d:LayoutOverrides="Height" />
        <TextBlock Text="{Binding Publisher, 
            FallbackValue='(暂无)'}" Height="26" 
                   VerticalAlignment="Top" Margin="0,33,0,0" />
    </Grid>
=================================


CollectionViewSource Changes
对于在GataGrid中做分组管理,现在的CollectionViewSource支持数据到GroupDescriptions的绑定,这样可以更加轻松的在XAML做分组。

 

=================================
    <UserControl.Resources>
        <CollectionViewSource x:Name="dataSource" 
      Source="{Binding}">
            <CollectionViewSource.GroupDescriptions>
                <PropertyGroupDescription PropertyName="Gender" />
                <PropertyGroupDescription PropertyName="AgeGroup" />
            </CollectionViewSource.GroupDescriptions>
            <CollectionViewSource.SortDescriptions>
                <compMod:SortDescription PropertyName="AgeGroup" Direction="Ascending"/>                
            </CollectionViewSource.SortDescriptions>
        </CollectionViewSource>
    </UserControl.Resources>
    <Grid x:Name="LayoutRoot" Background="White">
        <sdk:DataGrid ItemsSource="{Binding Source={StaticResource dataSource}}" />
    </Grid>

=================================
=================================
代码
      
      
public List < Person > GetPeople()
{
List
< Person > peeps = new List < Person > ();
peeps.Add(
new Person() { FirstName = " Wang " , LastName = " Zhe " , Gender = " M " , AgeGroup = " Adult " });
peeps.Add(
new Person() { FirstName = " nasa " , LastName = " wang " , Gender = " M " , AgeGroup = " Adult " });
peeps.Add(
new Person() { FirstName = " summer " , LastName = " liang " , Gender = " F " , AgeGroup = " Kid " });
peeps.Add(
new Person() { FirstName = " liang " , LastName = " jing " , Gender = " F " , AgeGroup = " Kid " });
return peeps;
}

 

=================================

Error Propogation
Silverlight的数据验证机制,在这里得到了很多的扩充,提供了IDataErrorInfoINotifyDataErrorInfo从而能得到更多的信息。

 


相关文章
|
2月前
|
开发框架 开发者 UED
ArkUI常用布局:构建响应式和高效的用户界面
本文详细介绍了HarmonyOS应用开发中ArkUI框架的常用布局方式,包括线性布局、层叠布局、弹性布局、相对布局、栅格布局、列表和轮播布局。每种布局方式都配有示例代码,帮助开发者构建响应式和高效的用户界面。通过合理选择和使用这些布局,可以显著提升应用的性能和用户体验。
161 0
|
5月前
|
开发者 C# Windows
WPF布局大揭秘:掌握布局技巧,轻松创建响应式用户界面,让你的应用程序更上一层楼!
【8月更文挑战第31天】在现代软件开发中,响应式用户界面至关重要。WPF(Windows Presentation Foundation)作为.NET框架的一部分,提供了丰富的布局控件和机制,便于创建可自动调整的UI。本文介绍WPF布局的基础概念与实现方法,包括`StackPanel`、`DockPanel`、`Grid`等控件的使用,并通过示例代码展示如何构建响应式布局。了解这些技巧有助于开发者优化用户体验,适应不同设备和屏幕尺寸。
144 0
|
8月前
|
编解码 前端开发 开发者
构建响应式网页布局的终极指南
【2月更文挑战第18天】 随着移动互联网的兴起,响应式网页设计成为前端开发者必须掌握的核心技能之一。本文旨在提供一个全面的指南来帮助开发者理解并实现灵活且高效的响应式布局。我们将深入探讨媒体查询、弹性盒模型、相对单位等关键技术,并通过实例演示如何结合这些技术创建适应不同屏幕尺寸的网页。文章的目标是让读者能够独立设计和开发出在各种设备上均能提供优秀用户体验的响应式网站。
148 1
|
8月前
|
前端开发 开发者 UED
构建响应式网页布局的现代方法
【2月更文挑战第13天】随着移动互联网的兴起,为不同设备设计适配的网页变得至关重要。本文深入探讨了使用Flexbox和Grid两种CSS布局技术构建响应式网页的方法,分析了它们的优劣,并通过实例展示了如何有效地运用这些技术以提升页面的响应性和用户体验。
|
8月前
|
前端开发 JavaScript
响应式UI框架
响应式UI框架
127 0
响应式UI框架
|
JavaScript 前端开发 UED
前端祖传三件套JavaScript的DOM之事件的各种具体事件类型的UI
在前端开发中,JavaScript 中的 DOM 事件机制提供了丰富的功能和灵活的方式来处理各种事件。本文将介绍 JavaScript 中常见的 UI 事件类型,包括鼠标事件、键盘事件、表单事件和窗口事件。
144 0
|
前端开发 JavaScript UED
前端祖传三件套JavaScript的DOM之事件的各种具体事件类型的鼠标/滚轮
在前端开发中,JavaScript 中的 DOM 事件机制提供了丰富的功能和灵活的方式来处理各种事件。本文将介绍 JavaScript 中常见的鼠标/滚轮事件类型,包括鼠标事件、滚轮事件。
497 0