Can we concat two properties in data binding?

后端 未结 6 505
别跟我提以往
别跟我提以往 2021-02-01 13:04

Can we concat two properties together in binding expression? If possible without converter or without writing two textblocks and setting them individually?

相关标签:
6条回答
  • 2021-02-01 13:49

    It is possible in WPF with the help of MultiBinding and StringFormat. But not in Silverlight unfortunately.

    0 讨论(0)
  • 2021-02-01 13:54
    <TextBlock.Text>
       <MultiBinding StringFormat="{}{0} , {1}">
         <Binding Path="data1" />
         <Binding Path="data2" />
        </MultiBinding>
    </TextBlock.Text>
    

    data1 and data2 are string properties which are binded.

    0 讨论(0)
  • 2021-02-01 13:57

    If you want to show, say FirstName and LastName, in a single TextBlock, then you can do like this:

    <TextBlock>
         <Run Text="{Binding FirstName}" />
         <Run Text="   " /> <!-- space -->
         <Run Text="{Binding LastName}" />
    </TextBlock>
    

    Now, the TextBlock's Text property will be "Sachin Tendulkar" and will be displayed if:

    FirstName = Sachin
    LastName  = Tendulkar
    

    Hope that helps.

    0 讨论(0)
  • 2021-02-01 13:57

    Like alpha-mouse suggests MultiBinding won't work out of the box, but this guy has thrown something together that might help:

    http://www.olsonsoft.com/blogs/stefanolson/post/Improvements-to-Silverlight-Multi-binding-support.aspx

    If that seems a bit rogue, then maybe try putting a combined value property on your object as a helper for the Binding mechanism, like:

    public string FullName {
       get { return this.FirstName + " " + this.LastName; }
    }
    
    0 讨论(0)
  • 2021-02-01 14:02

    If you need to add any string, then try it. Here I add "%" after binding text in windows phone.

    <TextBlock Text="{Binding Path=clouds.all, StringFormat=\{0\}%}"/>
    
    0 讨论(0)
  • 2021-02-01 14:05

    You can add a new property with a getter that performs the concatenation.

    Say you have FirstName and LastName properties. You can then define a Name property as follows:

    public string Name { get { return FirstName + " " + LastName; } }
    

    This will work well, but you should be aware that you cannot do two-way binding for a read-only property. Also you may want to implement property changed notification for the concatenated property in the setters for the source properties.

    0 讨论(0)
提交回复
热议问题