【微软实训】试用XAML控件数据绑定

Metro应用开发其实和Android应用开发有一点相似。前台使用XML进行控件布局,后台进行赋值和算法操作,这种做法把控件独立于后台编程之外,可视化的布局是很方便清晰的。比较特别的是Metro应用用的不是一般的XML,而是XAML,虽然基本的语法是一致的,但是控件的使用和嵌套要灵活许多。

根据作业要求,是要把上次完成的控制台版天气预报小程序搬到Metro应用上。因为想着后台操作基本上已经完成了,所以先从界面布局下手。

首先是拖过来一个Hub控件。Hub控件下有若干个HubSection子项,每个子项下默认是DataTemplate。犹豫了几秒之后百度了一下DataTemplate,发现是和ASP.NET前端中模版列差不多的东西,如果是要绑定列表项的话会方便许多(虽然现在我还用不着。

但是DataTemplate带来的一个问题就是,因为DataTemplate中的控件是根据数据量进行加载的,所以不能在后台直接用控件名进行访问赋值。

现在的问题是,我需要把获取到的天气数据显示到DataTemplate下的TextBlock中,但是我不能在后台直接给这个TextBlock赋值。

(其实在后台对DataTemplate中控件进行赋值的方法也是有的,大致上是通过在DataTemplate中逐个查找的方式来实现,但是如果控件数量很多,这时工作量就会很大而效率很低,并不是科学的解决方案。)

科学的解决方案是通过绑定。但是新的问题又来了,虽然在ASP.NET中用过数据绑定(而且觉得很好用),但是Metro应用中的绑定……怎么实现谁来告诉我……

好的最后是度娘告诉了我。

查阅了文档和资料,了解到绑定有五种模式,OneWay、TwoWay、OnWayToSource、Default以及OneTime,亦即单向、双向、逆向、默认和一次性的绑定。

因为对语法还不熟悉,这次尝试使用了最简单的匿名绑定。因为没有实现INotifyPropertyChanged接口(向绑定控件发送数据更改通知),所以源数据每次改变后都需要再次绑定才能在界面上显示更改。

XAML:

 <Hub Header="天气预报">
     <HubSection x:Name="currentHub" Header="" Width="300">
         <DataTemplate>
             <TextBlock Text="{Binding}"
                Style="{ThemeResource BodyTextBlockStyle}" />
         </DataTemplate>
      </HubSection>
 </Hub>

C#:

currentHub.DataContext = currentData;

如果控件显示的都是相关的属性,可以把数据封装进一个类对象,对整个对象进行绑定。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值