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从而能得到更多的信息。

 


相关文章
|
3月前
|
JavaScript 索引
Vue 3.x 版本中双向数据绑定的底层实现有哪些变化
从Vue 2.x的`Object.defineProperty`到Vue 3.x的`Proxy`,实现了更高效的数据劫持与响应式处理。`Proxy`不仅能够代理整个对象,动态响应属性的增删,还优化了嵌套对象的处理和依赖追踪,减少了不必要的视图更新,提升了性能。同时,Vue 3.x对数组的响应式处理也更加灵活,简化了开发流程。
|
6月前
|
开发者 C# Windows
WPF布局大揭秘:掌握布局技巧,轻松创建响应式用户界面,让你的应用程序更上一层楼!
【8月更文挑战第31天】在现代软件开发中,响应式用户界面至关重要。WPF(Windows Presentation Foundation)作为.NET框架的一部分,提供了丰富的布局控件和机制,便于创建可自动调整的UI。本文介绍WPF布局的基础概念与实现方法,包括`StackPanel`、`DockPanel`、`Grid`等控件的使用,并通过示例代码展示如何构建响应式布局。了解这些技巧有助于开发者优化用户体验,适应不同设备和屏幕尺寸。
205 0
|
9月前
|
存储 缓存 JavaScript
深入探索 Vue 响应式原理:数据驱动视图的奥秘
深入探索 Vue 响应式原理:数据驱动视图的奥秘
深入探索 Vue 响应式原理:数据驱动视图的奥秘
|
前端开发 JavaScript 开发者
前端祖传三件套JavaScript的DOM之事件的事件委托
在前端开发中,事件处理是非常重要的一部分。JavaScript 中的 DOM 事件机制提供了丰富的功能和灵活的方式来处理各种事件,并且事件委托是其中不可或缺的一部分。本文将介绍 JavaScript 中的事件委托。
148 1
|
JavaScript 前端开发 UED
前端祖传三件套JavaScript的DOM之事件的各种具体事件类型的焦点
在前端开发中,JavaScript 中的 DOM 事件机制提供了丰富的功能和灵活的方式来处理各种事件。本文将介绍 JavaScript 中常见的焦点事件类型,包括 focus、blur、focusin 和 focusout。
222 0
|
JavaScript 前端开发 UED
前端祖传三件套JavaScript的DOM之事件的各种具体事件类型的UI
在前端开发中,JavaScript 中的 DOM 事件机制提供了丰富的功能和灵活的方式来处理各种事件。本文将介绍 JavaScript 中常见的 UI 事件类型,包括鼠标事件、键盘事件、表单事件和窗口事件。
155 0
|
JavaScript 前端开发
前端祖传三件套JavaScript的DOM之DOM操作的动态样式
在前端开发中,动态样式是一种非常实用的技术。通过 JavaScript 的 DOM 操作,可以动态地创建和修改 CSS 样式,实现一些特殊的效果。本文将介绍如何使用 DOM 操作进行动态样式的创建和修改。
165 0

热门文章

最新文章