我的CSDN博客:http://blog.csdn.net/bitfan我的新浪微博:http://t.sina.com.cn/jinxuliang

金旭亮

让技术变得有趣,将学习升级为探索
随笔 - 38, 文章 - 0, 评论 - 772, 阅读 - 19万
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

WPF4数据绑定应用之“创建具有多种显示效果的字串”

Posted on   金旭亮  阅读(1733)  评论(6编辑  收藏  举报

WPF4数据绑定应用之

 

  创建具有多种显示效果的字串

 

            WPF4对流文档(Flow Document)的一个重大改进之一就是Run元素的Text属性变成了一个依赖属性,这就使我们可以利用WPF数据绑定机制创建出可以及时更新且具有丰富显示样式的字串来,一个典型示例如 1所示。

 

 

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文件中定义绑定到窗体依赖属性CounterRun元素。

 

    <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元素的“父亲”TextBlockDataContext属性引用窗体自身:

 

    private void Window_Loaded(object sender, RoutedEventArgs e)

    {

            textBlock1.DataContext = this;

     }

 

         示例程序开发完成。

         WPF的数据绑定机制是Windows Form所无法比拟的,应用得当,可以大大地提升开发效率。

 

下载示例源码

 

 

编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
我的CSDN博客:http://blog.csdn.net/bitfan我的新浪微博:http://t.sina.com.cn/jinxuliang
点击右上角即可分享
微信分享提示