Можем ли мы объединить два свойства в привязке данных? - PullRequest
37 голосов
/ 01 декабря 2010

Можем ли мы объединить два свойства вместе в выражении связывания?По возможности без конвертера или без написания двух текстовых блоков и их индивидуальной настройки?

Ответы [ 6 ]

85 голосов
/ 01 декабря 2010

Если вы хотите показать, скажем, FirstName и LastName, в одном TextBlock, то вы можете сделать так:

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

Теперь свойство Text TextBlockбудет "Sachin Tendulkar" и будет отображаться, если:

FirstName = Sachin
LastName  = Tendulkar

Надеюсь, это поможет.

14 голосов
/ 25 ноября 2016
<TextBlock.Text>
   <MultiBinding StringFormat="{}{0} , {1}">
     <Binding Path="data1" />
     <Binding Path="data2" />
    </MultiBinding>
</TextBlock.Text>

data1 и data2 - свойства строки, которые связаны.

13 голосов
/ 01 декабря 2010

Как предполагает альфа-мышь, MultiBinding не будет работать из коробки, но этот парень скинул что-то, что могло бы помочь:

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

Если это кажется немного мошенническимзатем возможно попробуйте добавить свойство комбинированного значения в ваш объект в качестве помощника для механизма привязки, например:

public string FullName {
   get { return this.FirstName + " " + this.LastName; }
}
6 голосов
/ 01 декабря 2010

Это возможно в WPF с помощью MultiBinding и StringFormat.Но не в Silverlight, к сожалению.

3 голосов
/ 28 октября 2015

Если вам нужно добавить какую-либо строку, попробуйте.Здесь я добавляю «%» после связывания текста в Windows Phone.

<TextBlock Text="{Binding Path=clouds.all, StringFormat=\{0\}%}"/>
3 голосов
/ 01 декабря 2010

Вы можете добавить новое свойство с помощью метода get, который выполняет конкатенацию.

Скажем, у вас есть свойства FirstName и LastName. Затем вы можете определить свойство Name следующим образом:

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

Это будет хорошо работать, но вы должны знать, что вы не можете выполнить двустороннее связывание для свойства только для чтения. Также вы можете захотеть реализовать уведомление об изменении свойства для составного свойства в установщиках для свойств источника.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...