• 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>

  • 相关阅读:
    拓扑检查(ArcEngine)
    IMap.SelectByShape 方法选择要素
    根据图层获取要素的渲染颜色
    ArcEngine(AE)符号选择器及符号恢复功能【转载】
    版面元素介绍IElement
    示例:由线段生成一个环,由环构成一个多边形(可以包含多个环的多边形集)
    AO的Display对象简介二【转载】
    显示要素层中的某些要素
    示例:从GraphicsContain中取出一个元素
    示例:从Table中获取SelectionSet
  • 原文地址:https://www.cnblogs.com/tianma3798/p/5759709.html
Copyright © 2020-2023  润新知