此文章是一篇学习笔记,是学习Windows SDK中关于数据绑定部分的笔记。如果你安装了Windows SDK,你一般可以在他的例子目录中找到一个叫 ConnectedData 的目录。

此示例演示了:

l  如何将DataSet中的一个表绑定了ListBox中;

l  指定明细的显示方式;

l  自定义转换。

WPF 学习笔记(数据绑定篇)
要运行此示例,需要运行
CopyData.cmd,此批处理复制BookData.mdbApplicationData目录。

首先初始化一个DataSet数据源,然后调用:

myListBox.DataContext = myDataSet;

表示为myListBox设置数据上下文为此DataSet,在XML中,描述为:

WPF 学习笔记(数据绑定篇)    <ListBox Name="myListBox" Height="200"
WPF 学习笔记(数据绑定篇)
WPF 学习笔记(数据绑定篇)      ItemsSource
="{Binding Path=BookTable}"
WPF 学习笔记(数据绑定篇)
WPF 学习笔记(数据绑定篇)      ItemTemplate  
="{StaticResource BookItemTemplate}"/>
WPF 学习笔记(数据绑定篇)

其中,ItemSource=”{Binding Path=BookTable}”,表示绑定到子属性(在这里是DataSet的子表)BookTable

ItemTemplate  ="{StaticResource BookItemTemplate}指定了明细的显示模板为静态资源BookItemTemplate,此静态资源的定义如下:

WPF 学习笔记(数据绑定篇)     <DataTemplate x:Key="BookItemTemplate">
WPF 学习笔记(数据绑定篇)
WPF 学习笔记(数据绑定篇)        
<Grid>
WPF 学习笔记(数据绑定篇)
WPF 学习笔记(数据绑定篇)          
<Grid.ColumnDefinitions>
WPF 学习笔记(数据绑定篇)
WPF 学习笔记(数据绑定篇)            
<ColumnDefinition Width="250" />
WPF 学习笔记(数据绑定篇)
WPF 学习笔记(数据绑定篇)            
<ColumnDefinition Width="100" />
WPF 学习笔记(数据绑定篇)
WPF 学习笔记(数据绑定篇)            
<ColumnDefinition Width="*"/>
WPF 学习笔记(数据绑定篇)
WPF 学习笔记(数据绑定篇)          
</Grid.ColumnDefinitions>
WPF 学习笔记(数据绑定篇)
WPF 学习笔记(数据绑定篇)          
<TextBlock Text="{Binding Path=Title}" Grid.Column="0"
WPF 学习笔记(数据绑定篇)
WPF 学习笔记(数据绑定篇)            FontWeight
="Bold" />
WPF 学习笔记(数据绑定篇)
WPF 学习笔记(数据绑定篇)          
<TextBlock Text="{Binding Path=ISBN}" Grid.Column="1" />
WPF 学习笔记(数据绑定篇)
WPF 学习笔记(数据绑定篇)          
<TextBlock Grid.Column="2" Text="{Binding Path=NumPages}"
WPF 学习笔记(数据绑定篇)
WPF 学习笔记(数据绑定篇)                     Background
="{Binding Path=NumPages,
WPF 学习笔记(数据绑定篇)
WPF 学习笔记(数据绑定篇)              Converter={StaticResource MyConverter}}"
/>
WPF 学习笔记(数据绑定篇)
WPF 学习笔记(数据绑定篇)        
</Grid>
WPF 学习笔记(数据绑定篇)
WPF 学习笔记(数据绑定篇)      
</DataTemplate>
WPF 学习笔记(数据绑定篇)

描述了明细使用3列显示,第一列绑定到Title属性,第二列绑定到ISBN属性,第三列绑定到NumPages属性。

第三列的Background也绑定到NumPages属性中,但是你知道的,背景色怎么可以是数字类型呢?这里是指定了一个转换器,转化器是一个实现IValueConverter接口的对象。参考:IntColorConverter.cs

BindConversionMarkup

此示例演示了:

l  转换器在转换时获取被转化的类型。

WPF 学习笔记(数据绑定篇)
在红色的标签描述中:

WPF 学习笔记(数据绑定篇)<TextBlock Name="myconvertedtext"
WPF 学习笔记(数据绑定篇)
WPF 学习笔记(数据绑定篇)    Foreground
="{Binding Path=TheDate,
WPF 学习笔记(数据绑定篇)
WPF 学习笔记(数据绑定篇)                         Converter={StaticResource MyConverterReference}}"
>
WPF 学习笔记(数据绑定篇)
WPF 学习笔记(数据绑定篇)    
<TextBlock.Text>
WPF 学习笔记(数据绑定篇)
WPF 学习笔记(数据绑定篇)      
<Binding Path="TheDate"
WPF 学习笔记(数据绑定篇)
WPF 学习笔记(数据绑定篇)               Converter
="{StaticResource MyConverterReference}"/>
WPF 学习笔记(数据绑定篇)
WPF 学习笔记(数据绑定篇)
</TextBlock.Text>

前景色和文本都绑定到TheDate属性上,而且他们使用了相同的转换器,那么转换器如何在绑定时,正确的将文本返回给Text属性,而将颜色返回给Foreground属性呢?

WPF 学习笔记(数据绑定篇)public class MyConverter : IValueConverter
WPF 学习笔记(数据绑定篇)
  }

可以看出,Convert通过检测被转换类型,将返回正确的数据,也就是说,绑定系统会正确的转递他希望的数据类型。

BindDPtoDP

此示例演示了如何绑定到一个已有的控件上。

WPF 学习笔记(数据绑定篇)
在此示例中,当我们下拉选择不同的颜色时,下面的正方形颜色会随之改变。下面是绑定代码:

WPF 学习笔记(数据绑定篇)   <Canvas>
WPF 学习笔记(数据绑定篇)
WPF 学习笔记(数据绑定篇)        
<Canvas.Background>
WPF 学习笔记(数据绑定篇)
WPF 学习笔记(数据绑定篇)          
<Binding ElementName="myComboBox" Path="SelectedItem.Content"/>
WPF 学习笔记(数据绑定篇)
WPF 学习笔记(数据绑定篇)        
</Canvas.Background>
WPF 学习笔记(数据绑定篇)
WPF 学习笔记(数据绑定篇)      
</Canvas>
WPF 学习笔记(数据绑定篇)
WPF 学习笔记(数据绑定篇)

在此代码中,可以设置绑定对象是一个当前的对象,使用ElementName指定,Path属性还是一样的。

当然,此示例也展示了绑定系统的自动转化功能,其数据源是字符串类型,目标被转化为一个颜色刷。

相关文章:

  • 2021-11-24
  • 2021-10-18
  • 2022-12-23
  • 2021-05-24
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-09-24
  • 2022-12-23
  • 2021-06-04
  • 2021-08-28
  • 2021-07-28
相关资源
相似解决方案