WPF4数据绑定应用之"创建具有多种显示效果的字串"
2011-02-10 15:51
459 查看
原帖:bitfan(数字世界一凡人)的专栏
WPF4对流文档(Flow Document)的一个重大改进之一就是Run元素的Text属性变成了一个依赖属性,这就使我们可以利用WPF数据绑定机制创建出可以及时更新且具有丰富显示样式的字串来,一个典型示例如图 1所示:当示例程序运行时,用户每点击一次按钮,程序将突出显示其单击次数。
在早期版本的WPF应用程序中,由于用于显示文本的Run元素不支持数据绑定,要实现示例程序的效果比较麻烦,必须嵌套使用TextBlock控件。
使用WPF4,由于Run元素支持数据绑定,并且其Text属性变成了依赖属性,实现上述功能变得很简单。
首先,给窗体定义一个名为Counter的依赖属性:
public int Counter
{
get { return (int)GetValue(CounterProperty); }
set { SetValue(CounterProperty, value); }
}
public static readonly DependencyProperty CounterProperty =
DependencyProperty.Register("Counter", typeof(int),
typeof(Window));
提示:
在Visual Studio 2010的代码编辑器中右击,从弹出菜单中选择以下命令:
Insert SnippetàNetFX30àDefine a DependencyProperty
可以快速得到一个依赖属性的代码框架
在按钮的单击事件中递增Counter的值。
private void btnClick_Click(object sender, RoutedEventArgs e)
{
Counter++;
}
下面是最关键的地方——在窗体的XAML文件中定义绑定到窗体依赖属性Counter的Run元素。
<TextBlock Name="textBlock1" ……>
<Run >您单击了</Run>
<Run FontWeight="Bold" FontSize="30" Foreground="Red"
Text="{Binding Path=Counter}" ></Run>
<Run>次按钮</Run>
</TextBlock>
要让数据绑定起作用,还必须设定Run.Text属性从哪个对象中提取值。在本例中,Counter是窗体的属性,因此,我们在窗体的Load事件中让Run元素的“父亲”TextBlock的DataContext属性引用窗体自身:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
textBlock1.DataContext = this;
}
示例程序开发完成。
WPF的数据绑定机制是Windows Form所无法比拟的,应用得当,可以大大地提升开发效率。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/bitfan/archive/2009/11/12/4802943.aspx
相关文章推荐
- WPF4数据绑定应用之"创建具有多种显示效果的字串"
- WPF4数据绑定应用之“创建具有多种显示效果的字串”
- 数据结构之应用"栈(Stack)"实现: 解析算术表达式及计算
- ExtJS 中的compositefield 实现混合显示多种组件,label无法消除 残留"..."问题
- 用List<T> 给 DataGridView 绑定数据时,无法正常显示
- 使用 UITableView 创建表格应用演练(2)——从plist文件加载并显示数据
- "Automation服务器不能创建对象" 的多种解决办法
- Control Study -> 主表和子表数据同时在绑定控件显示(示例代码下载)
- 收缩"+" 显示数据
- 使用 UITableView 创建表格应用演练(3)——使用区段分类显示表格数据
- .net Repeater无数据时显示"no result" 快速解决方法
- 数据结构之应用 "栈(Stack)" 实现: 解析算术表达式及计算求值 (C#/Java)
- [收藏]"Automation服务器不能创建对象" 的多种解决办法
- [收藏]"Automation服务器不能创建对象" 的多种解决办法
- IE6通过点击 <a href="javascript:void(0);"></a>方式动态创建iframe无法显示
- Knockout 新版应用开发教程之"visible"绑定
- Knockout 新版应用开发教程之"text"绑定
- Android应用自定义User Data管理(将Settings下的"清除数据"变成"管理空间")
- Repeater无数据时显示"暂无数据"的代码
- VS2010中C#代码用"转到定义"或F12转到定义时,总是显示从元数据的问题