BindingBase.StringFormat 属性
获取或设置一个字符串,该字符串指定如果绑定值显示为字符串,应如何设置该绑定的格式。

StringFormat 可以是预定义的、撰写的或自定义的字符串格式。有关字符串格式的更多信息,请参见.NET Framework 中的格式化类型

如果设置 Converter 和 StringFormat 属性,则会先对数据值应用转换器,然后应用 StringFormat。

当将 Binding 上的 StringFormat 设置为撰写字符串格式时,只能指定一个参数。

如果使用 MultiBinding,则仅当 StringFormat 属性是在 MultiBinding 上设置的时才应用此属性。忽略在任何子 Binding对象上设置的 StringFormat 的值。撰写字符串格式中参数的数目不能超过 MultiBinding 中的子 Binding 对象数。

在使用 PriorityBinding 时,可以在 PriorityBinding 和/或子绑定对象上设置 StringFormat。如果 StringFormat 是在所应用的子绑定上设置的,则使用该值。如果 StringFormat 不是在所应用的子绑定上设置的,则应用 PriorityBinding 的StringFormat(如果已设置)。

更多:https://msdn.microsoft.com/zh-cn/library/system.windows.data.bindingbase.stringformat(v=vs.110).aspx

一、对于Text类型的绑定

后台绑定DataContext值

textBlock.DataContext = System.Diagnostics.Process.GetCurrentProcess();
button.DataContext = textBlock.DataContext;
label.DataContext = DateTime.Now; label3.DataContext = new { ID=,Time=DateTime.Now};

1.格式化DateTime

<!--测试成功-->
<TextBlock x:Name="label3" Text="{Binding Path=Time,StringFormat={}{0:yyyy-MM-dd}}"
Width="250" Height="30" Background="Linen" Margin="40,154,2,85">
</TextBlock>

2.MultiBinding绑定多个属性,并格式化

<TextBlock x:Name="textBlock" HorizontalAlignment="Left" Margin="40,86,0,0" TextWrapping="Wrap" VerticalAlignment="Top">
<TextBlock.Text>
<MultiBinding StringFormat="{}{0}----)">
<Binding Path="ProcessName" ></Binding>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
<!--测试成功-->
<TextBlock x:Name="label3"
Width="250" Height="30" Background="Linen" Margin="40,165,2,74">
<TextBlock.Text>
<MultiBinding StringFormat="{}{0:yyyy-MM-dd},ID:{1}">
<Binding Path="Time" ></Binding>
<Binding Path="ID" ></Binding>
</MultiBinding>
</TextBlock.Text>
</TextBlock>

二、对于Content类型,格式化使用ContentStringFormat

1.绑定单个值,格式化DateTime

<!--对于Content类型,使用ContentStringFormat格式化-->
<Label x:Name="label" Content="{Binding}" ContentStringFormat="时间:{0:yyyy-MM-dd}"
Width="200" Height="30" Background="Red" Margin="40,206,52,33">
</Label>

2.绑定多个值,没有目前还没找到更好方法,暂且在Content内容中嵌入其他空间如TextBlock,实现绑定多个值

<Label  x:Name="label3"
Width="250" Height="30" Background="Linen" Margin="40,165,2,74">
<Label.Content >
<StackPanel>
<TextBlock >
<TextBlock.Text>
<MultiBinding StringFormat="时间:{0:yyyy-MM-dd},ID:{1}">
<Binding Path="Time" ></Binding>
<Binding Path="ID"></Binding>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</StackPanel>
</Label.Content>
</Label>

Wpf 数据绑定之BindingBase.StringFormat的更多相关文章

  1. WPF数据绑定Binding(二)

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

  2. 剖析WPF数据绑定机制

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

  3. WPF 数据绑定Binding

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

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

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

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

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

  6. WPF中Binding使用StringFormat格式化字符串方法

    原文:WPF中Binding使用StringFormat格式化字符串方法 货币格式 <TextBlock Text="{Binding Price, StringFormat={}{0 ...

  7. 微软原文翻译:适用于.Net Core的WPF数据绑定概述

    原文链接,大部分是机器翻译,仅做了小部分修改.英.中文对照,看不懂的看英文. Data binding overview in WPF 2019/09/19 Data binding in Windo ...

  8. C#-WPF数据绑定基础(一)

    前言:WPF数据绑定技术有效的提高了程序的容错率,可以最大程度的保持程序的健壮性,从而降低程序在使用过程中崩掉的可能性. 接下来,我将分享一下我在写测量程序过程中所用到的数据绑定方面的知识 首先,我所 ...

  9. C#WPF数据绑定模板化操作四步走

    前言:WPF数据绑定对于WPF应用程序来说尤为重要,本文将讲述使用MVVM模式进行数据绑定的四步走用法: 具体实例代码如下: 以下代码仅供参考,如有问题请在评论区留言,谢谢 1 第一步:声明一个类用来 ...

随机推荐

  1. thinkphp3.2.2前后台公用类架构问题

    3.13之前好多项目都使用前后台公用类,在lib/action下创建Baseaction做为公共继承类,发现3.2.2里面很多人都用A调用,这样每用一次要用A调用,好麻烦,小编特意偷懒.亲测使用以下方 ...

  2. Unity3d 读取网络xml

    Unity3d 读取网络xml Unity3d 读取网络xml,这个xml文件需要不包含BOM信息,可以用UltraEdit打开xml文件,并且另存为的时候,选择不包含BOM的utf-8格式存储!

  3. Truck History(poj 1789)

    Description Advanced Cargo Movement, Ltd. uses trucks of different types. Some trucks are used for v ...

  4. SCVMM更换数据库,如何搞?

    因为SCVMM和SQL不是集成在同一台机器上的. 所以,当SQL换机器或是换名字后,SCVMM就不能启动了. 并且MS没提供直观的更改数据库连接的工具,只是在安装的时候有选项. 网上找了方法,修改注册 ...

  5. 我的HttpClients工具

    import java.io.IOException; import javax.ws.rs.core.MediaType; import org.apache.commons.httpclient. ...

  6. c++学习(1)

    c++学习(1) 1.const C VS C++: 在c语言中const是一个只读变量(ReadOnly Varible),在c++中const只是代表常量(Constant). 例: const ...

  7. bzoj 1089 [SCOI2003]严格n元树(DP+高精度)

    1089: [SCOI2003]严格n元树 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 1250  Solved: 621[Submit][Statu ...

  8. Java多线程Thread.yield(),thread.join(), Thread.sleep(200),Object.wait(),Object.notify(),Object.notifyAll()的区别

    Thread.yield(),在某个线程里调用Thread.yield(),会使这个线程由正在运行的running状态转变为等待cpu时间片的runable状态.join()是Thread类的一个非s ...

  9. Html中src、href的相对路径与绝对路径

    What is a path? Why is this something developers should care about? A path is simply the location of ...

  10. 谈NOT IN和Exists

    表1: test001 select * from test001