Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

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

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

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

public string FullName {
   get { return this.FirstName + " " + this.LastName; }
}

Ответ 2

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

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

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

FirstName = Sachin
LastName  = Tendulkar

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

Ответ 3

<TextBlock.Text>
   <MultiBinding StringFormat="{}{0} , {1}">
     <Binding Path="data1" />
     <Binding Path="data2" />
    </MultiBinding>
</TextBlock.Text>

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

Ответ 4

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

Ответ 5

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

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

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

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

Ответ 6

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

<TextBlock Text="{Binding Path=clouds.all, StringFormat=\{0\}%}"/>