У меня есть некоторый класс со свойствами firstName и lastName. Я хочу связать TextBlock с конкатенацией этих двух свойств. Я знаю, что могу создать третье свойство, которое будет возвращать конкатенацию этих свойств. Но я не хочу использовать этот подход. Можно ли привязать TextBlock к двум свойствам. а также я не хочу создавать композитный userControl.
В .NET 3.5SP1 Microsoft добавила StringFormat к привязкам. Это делает это намного проще. См. сообщение в блоге Лестера для примера. В вашем случае:
<TextBox> <TextBox.Text> <MultiBinding StringFormat="{0} {1}"> <Binding Path="FirstName" /> <Binding Path="LastName"/> </MultiBinding> </TextBox.Text> </TextBox>
или
<TextBox> <TextBox.Text> <MultiBinding StringFormat="{1}, {0}"> <Binding Path="FirstName" /> <Binding Path="LastName"/> </MultiBinding> </TextBox.Text> </TextBox>
Вы могли бы использовать мультисвязывание, но я предполагаю, что вам нужно кодировать выход из конкатенации. Вот пример: Multibinding
использовать MultiBinding или Converter (если есть сложные операции)
Я не уверен, возможно ли связать два свойства, но нет причины, по которой вы не можете создать два TextBlocks, верно?
<TextBlock Text="{Binding firstName}"/> <TextBlock Text="{Binding lastName}"/>