Wpf 数据绑定之BindingBase.StringFormat

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=1,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>

时间: 2024-10-05 06:16:07

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

WPF 数据绑定 使用Code First with Database

一.准备工作 1.开发工具 Visual Studio 2013 2.安装Code First with Database 3.创建示例数据库 MyShop USE MyShop GO CREATE TABLE [dbo].[Categories] ( [CategoryId] [INT] NOT NULL IDENTITY , [Name] [NVARCHAR](MAX) , CONSTRAINT [PK_dbo.Categories] PRIMARY KEY ( [CategoryId] )

WPF 数据绑定基础

纯理论,可能会枯燥. .net 技术群: 199281001 ,欢迎加入. 1.目标对象一定是派生自DependencyObject的对象,并且目标属性必须是依赖属性,否则数据绑定操作将会失   败.绑定源对象可以不是依赖对象和依赖属性. 2.定义了依赖属性时,FrameworkPropertyMetadataOptions.NotDataBindable 标志会影响依赖属性的绑定.当改变源对象依赖属性值后,绑定目标可以立即得以更新,开发人员不需要响应事件来手动编写响应代码. 3.移除绑定:开发

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

注意:本人初学WPF,文中可能有表达或者技术性问题,欢迎指正!谢谢! 一:什么是数据绑定? “Windows Presentation Foundation (WPF) 数据绑定为应用程序提供了一种简单而一致的方法来显示数据以及与数据交互. 元素能够以 公共语言运行时 (CLR) 对象 和 XML 形式绑定到来自各种数据源的数据.“ 这一段的解释来自于MSDN(貌似是机器翻译),我个人理解,数据绑定就是把我们需要操作的两个或多个对象的属性值相互关联的一种方便我们编程的技术. 二:一个绑定关系的四

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

WPF数据绑定 数据绑定到元素属性是将源对象指定为一个WPF元素,并且源属性是一个依赖属性,依赖属性内置了变更通知.当改变源对象依赖属性值之后,绑定目标可以立即得到更新,开发人员不需要手动编写响应事件. 在绑定来源和绑定目标之间,可以使用Mode属性指定绑定的方法.Mode属性是System.Windows.Data.BindMode枚举类型的属性: OneWay:源数据变更目标数据变更,反之不行 OneTime:仅在启动时更新 OneWayToSource:目标数据更新源数据更新,反之不行 T

WPF——数据绑定及属性改变事件

一.首先需要封装一下文本框的属性,并且在实体类中添加一个实体类的属性改变函数 public class User : INotifyPropertyChanged //INotifyPropertyChanged接口是 WPF/Silverlight 开发中非常重要的接口, 它构成了 ViewModel 的基础, 数据绑定基本上都需要这个接口. { private string _Wenben; public string Wenben { get { return _Wenben; } set

WPF中Label使用StringFormat

1. 在WPF中Label的Content有时内容只需要改变个别数字,而不需要所以内容都修改,这时候就要使用StringFormat, 如: <Label Content="I have xxx friends"/> 这里面的xxx是个变量,那在Binding时应该怎样写呢 1 <Label Content="{Binding FirendNumber, StringFormat='I have {0} firends}"/> 2 当我们这样

wpf 数据绑定2

可以将ItemsControl类控件的依赖项属性ItemsSource作为集合的绑定对象.那么如果集合实现了ObservableCollection<T>这个泛型接口,就能够在集合改变的时候界面也做出响应的改变. ItemsSource = "{Binding}" <--第一种表示方式在父级控件中设置了DataContext属性 !--> ItemsSource = {Binding Source = {StaticResource XXXX}} <--第

wpf 数据绑定1

数据绑定实质上就是把一些任意的.net对象绑定到一起.那么绑定的源头就有1.绑定到目标对象的属性(通常为wpf元素)2.其他任何数据源 数据绑定的关键是System.Windows.Data.Binding类,他会把两个属性粘在一起,并在他们之间建立一条通信通道 Binding binding = new Binding(); //设置源对象 binding.Source = tree; //设置源属性 binding.Path = new PropertyPath("SelectedItem.

WPF数据绑定

一:控件到控件的绑定 1:OneWay Source影响着Target,但是Target却影响不到Source.2:OneWayToSource Target影响Source,而Source却影响不到Target.3:TwoWay Source与Target相互影响.4:OneTime 在OneWay的基础上延伸了一个OneTime,仅绑定一次.如果大家属性Jquery中的one函数我想就可以不用表述了. <Window x:Class="WpfApplication1.Window1&q