写在前面

WPF中常常有这样的情况:需要在UI上显示一些信息,比如显示一张图片的信息,信息结构是:

  1. 图片名:Xxx
  2. 图片尺寸:Xxx

而其中的 Xxx 通常通过数据绑定来获得, Xxx 前面的内容是需要在xaml中写死的,这个时候如何布局比较方便呢?

可以使用StringFormat来简单实这个需求.


StringFormat的使用

看下面的代码示例:

  1. <Textbox Margin="5" Grid.Row="2" Grid.Column="1"
  2. Text="{BindingPath=UnitCost,StringFormat={}{O:C}}">
  3. </TextBox>

这段代码初步演示了如何使用StringFormat格式字符串.

下面的图中展示了一些常用的字符串格式:




下面展示一下如何使用StringFormat解决开头提到的需求;

假如在TextBlock的Text绑定了后台的一字符串来展示信息,如果希望在该字符串的前后加上一些提示或者后缀什么的,可以像下面这样来写:

  1. <TextBlock Text="Binding Path=Name,StringFormat={}Xxxx{0}Xxxx"/>

上面的代码中Xxxx就是我们可以随意添加的文字内容,前面就会被展示在绑定的内容的前面,后面的就在后面


下面通过一个Demo来说明一下

  • 我使用VS2017建立一个项目:StringFormatDemo

  • 项目目录如下图:

  • 简单的User类的代码:

    User
    1. namespace StringFormatDemo
    2. {
    3. public class User
    4. {
    5. public string FirstName { get; set; }
    6. public string LastName { get; set; }
    7. public int Age { get; set; }
    8. public string Sex { get; set; }
    9. }
    10. }
  • AppVM类的代码

    AppVM
    1. using Microsoft.Practices.Prism.ViewModel;
    2. namespace StringFormatDemo
    3. {
    4. class AppVM:NotificationObject
    5. {
    6. public AppVM()
    7. {
    8. User = new User
    9. {
    10. FirstName = "La",
    11. LastName = "Laggage",
    12. Sex = "男",
    13. Age = 20
    14. };
    15. }
    16. private User _user;
    17. public User User
    18. {
    19. get => _user;
    20. set
    21. {
    22. if (value == _user) return;
    23. _user = value;
    24. RaisePropertyChanged(nameof(User));
    25. }
    26. }
    27. }
    28. }
  • 前台xaml

    前台xaml
    1. <Window x:Class="StringFormatDemo.MainWindow"
    2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    4. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    5. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    6. xmlns:local="clr-namespace:StringFormatDemo"
    7. mc:Ignorable="d" Foreground="Black" FontSize="16"
    8. Title="MainWindow" Height="450" Width="800">
    9. <Window.DataContext>
    10. <local:AppVM/>
    11. </Window.DataContext>
    12. <Grid>
    13. <Border Height="150" Width="240">
    14. <StackPanel>
    15. <StackPanel.Resources>
    16. <Style TargetType="TextBlock">
    17. <Setter Property="Padding" Value="8"></Setter>
    18. </Style>
    19. </StackPanel.Resources>
    20. <TextBlock Foreground="Black" Text="{Binding Path=User.FirstName,StringFormat={}FirstName: {0}}"/>
    21. <TextBlock Text="{Binding Path=User.LastName,StringFormat={}LastName: {0}}"/>
    22. <TextBlock Text="{Binding Path=User.Sex,StringFormat={}Sex: {0},FallbackValue=failed}"/>
    23. <TextBlock Text="{Binding Path=User.Age,StringFormat={}Age: {0}}"/>
    24. </StackPanel>
    25. </Border>
    26. </Grid>
    27. </Window>

这个Demo非常非常非常的简单,MainWindow的xaml中实例化AppVM作为DataContext,然后在StackPannel中绑定了AppVM下的User属性,并显示User的FirstName,LastName ... 最终效果如下:



通过StringFormat成功在 FirstName LastName ... 前加上了一些说明;

wpf数据绑定 - StringFormat的妙用的更多相关文章

  1. wpf Content数据绑定StringFormat起作用的原理和解决

    原文:wpf Content数据绑定StringFormat起作用的原理和解决 <Window x:Class="WpfOne.Bind.Bind6" xmlns=" ...

  2. WPF数据绑定Binding(二)

    WPF数据绑定Binding(二) 1.UI控件直接的数据绑定 UI对象间的绑定,也是最基本的形式,通常是将源对象Source的某个属性值绑定 (拷贝) 到目标对象Destination的某个属性上. ...

  3. WPF 数据绑定Binding

    什么是数据绑定? Windows Presentation Foundation (WPF) 数据绑定为应用程序提供了一种简单而一致的方法来显示数据以及与数据交互. 通过数据绑定,您可以对两个不同对象 ...

  4. WPF——数据绑定(一)什么是数据绑定

    注意:本人初学WPF,文中可能有表达或者技术性问题,欢迎指正!谢谢! 一:什么是数据绑定? “Windows Presentation Foundation (WPF) 数据绑定为应用程序提供了一种简 ...

  5. WPF中StringFormat 格式化 的用法

    原文 WPF中StringFormat 格式化 的用法 网格用法 <my:DataGridTextColumn x:Name="PerformedDate" Header=& ...

  6. 剖析WPF数据绑定机制

    引言 WPF框架采取的是MVVM模式,也就是数据驱动UI,UI控件(Controls)被严格地限制在表示层内,不会参与业务逻辑的处理,只是通过数据绑定(Data Binding)简单忠实地表达与之绑定 ...

  7. WPF 10天修炼 第十天- WPF数据绑定

    WPF数据绑定 数据绑定到元素属性是将源对象指定为一个WPF元素,并且源属性是一个依赖属性,依赖属性内置了变更通知.当改变源对象依赖属性值之后,绑定目标可以立即得到更新,开发人员不需要手动编写响应事件 ...

  8. WPF中StringFormat的用法

    原文:WPF中StringFormat的用法 WPF中StringFormat的用法可以参照C#中string.Format的用法 1. C#中用法: 格式化货币(跟系统的环境有关,中文系统默认格式化 ...

  9. WPF中StringFormat的用法--显示特定位数的数字

    原文:WPF中StringFormat的用法--显示特定位数的数字 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/huangli321456/art ...

随机推荐

  1. .NET格式化字符串详细说明

    DataFormatString属性:{0:Bxx}B为取值类型 C 以货币格式显示数值. D 以十进制格式显示数值. E 以科学记数法(指数)格式显示数值. F 以固定格式显示数值. G 以常规格式 ...

  2. xp安装vmware10时一直停在installing packages on the system

    我估计的原因是: vm会在网上邻居(LAN或高速internet)下创建两个 vmware network adapter vmnet8 vmware network adapter vmnet1   ...

  3. .net 4.0的Lazy<T>方法,反射实现延迟加载。

    //自己山寨.public class YaLazy<T> { private bool _isValueCreated = false; public bool IsValueCreat ...

  4. Halcon的二维码解码步骤和解码技巧

    一.二维码简介 1 . 类型多样,常见的有QR Code二维码. Data Matrix二维码等. 2.高密度编码,信息容量大. 3.容错能力强,具有纠错功能:二维码因穿孔.污损等引起局部损坏时,照样 ...

  5. 移动端bug之解决方式

    1.Android中元素被点击时产生的边框: * { -webkit-tap-highlight-color: rgba(250,250,250,0);   /*更改点击事件的焦点色*/} 2.去除移 ...

  6. TPshop学习

    笔记大纲: tpshop目录结构 功能模块 函数库 重要配置 助手函数 插件 模板 1.TPshop目录结构 目录结构(来自官方视频截图) 看这个图,目录结构一目了然.下面要讲的内容也是根据这个图展开 ...

  7. Linux下搭建gtk+2.0开发环境

    1.执行如下命令,检查系统是否已安装gtk+ pkg-config --list-all |grep gtk 若命令提示如下,则系统已安装gtk+,否则未安装. 2.若未安装,则执行如下命令进行安装 ...

  8. DirectFB编程

    一.简介 DirectFB是一个轻量级的提供硬件图形加速,输入设备处理和抽象的图形库,它集成了支持半透明的视窗系统以及在LinuxFramebuffer驱动之上的多层显示.它是一个用软件封装当前硬件无 ...

  9. laravel中的old()函数

    1.控制器 2.模板

  10. 创建DB2数据库联合对象

    db2 1.db2 =>update dbm cfg using Federated YES 2. db2 =>db2stop force3. db2 =>db2start 4.创建 ...