• 博客园logo
  • 会员
  • 周边
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
编写人生
写写代码,写写人生
博客园    首页    新随笔    联系   管理    订阅  订阅
WPF 学习笔记(数据绑定篇)
此文章是一篇学习笔记,是学习Windows SDK中关于数据绑定部分的笔记。如果你安装了Windows SDK,你一般可以在他的例子目录中找到一个叫 ConnectedData 的目录。

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

ADODataSet

此示例演示了:

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

l  指定明细的显示方式;

l  自定义转换。


要运行此示例,需要运行
CopyData.cmd,此批处理复制BookData.mdb到ApplicationData目录。

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

myListBox.DataContext = myDataSet;

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

    <ListBox Name="myListBox" Height="200"

      ItemsSource
="{Binding Path=BookTable}"

      ItemTemplate  
="{StaticResource BookItemTemplate}"/>

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

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

     <DataTemplate x:Key="BookItemTemplate">

        
<Grid>

          
<Grid.ColumnDefinitions>

            
<ColumnDefinition Width="250" />

            
<ColumnDefinition Width="100" />

            
<ColumnDefinition Width="*"/>

          
</Grid.ColumnDefinitions>

          
<TextBlock Text="{Binding Path=Title}" Grid.Column="0"

            FontWeight
="Bold" />

          
<TextBlock Text="{Binding Path=ISBN}" Grid.Column="1" />

          
<TextBlock Grid.Column="2" Text="{Binding Path=NumPages}"

                     Background
="{Binding Path=NumPages,

              Converter={StaticResource MyConverter}}"
/>

        
</Grid>

      
</DataTemplate>

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

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

BindConversionMarkup

此示例演示了:

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


在红色的标签描述中:

<TextBlock Name="myconvertedtext"

    Foreground
="{Binding Path=TheDate,

                         Converter={StaticResource MyConverterReference}}"
>

    
<TextBlock.Text>

      
<Binding Path="TheDate"

               Converter
="{StaticResource MyConverterReference}"/>

</TextBlock.Text>

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

public class MyConverter : IValueConverter

  
{

    
public object Convert(object o, Type type,

        
object parameter, CultureInfo culture)

    
{

        DateTime date 
= (DateTime)o;

        
switch (type.Name)

        
{

            
case "String":

                
return date.ToString("F", culture);

            
case "Brush":

                
return Brushes.Red;

            
default:

                
return o;

      }


    }


      
public object ConvertBack(object o, Type type,

          
object parameter, CultureInfo culture)

      
{

          
return null;

      }


  }

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

BindDPtoDP

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


在此示例中,当我们下拉选择不同的颜色时,下面的正方形颜色会随之改变。下面是绑定代码:

   <Canvas>

        
<Canvas.Background>

          
<Binding ElementName="myComboBox" Path="SelectedItem.Content"/>

        
</Canvas.Background>

      
</Canvas>

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

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

posted on 2007-09-20 22:02  编写人生  阅读(522)  评论(1)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3