2012-04-24 4 views
1

Я хочу совместить имя и идентификатор песни в заголовке песни. Было бы возможно, если бы у меня было:объединение двух полей в одно текстовое содержимое wpf

Song 
{ 
    public string Name {get; set;} 
    public int ID {get; set;} 
} 

Я хочу связать их в заголовок расширителя. На данный момент для привязки только к одному свойству. это так:

<Expander Foreground="#FFF4E7CA" Header="{Binding Song.Name}" FontWeight="Bold"> 
</Expander> 

Но я хочу быть некоторые вещи, как это:

Header = "{Binding Some.Name, Song.ID}" 

Можно ли как-нибудь потом? и если да, то как? Заранее спасибо.

ответ

5

Что-то вроде этого:

<Expander ...> 
    <Expander.Header> 
    <TextBlock> 
     <TextBlock Text="{Binding Song.Name}"/> 
     <TextBlock Text=" "/> 
     <TextBlock Text="{Binding Sond.ID}"/> 
    </TextBlock> 
    </Expander.Header> 
    ... 
</Expander> 
+0

Я пробовал это, и я получил: объект может принять только одного ребенка. Я не могу добавить несколько тегов «Run» – olidev

+0

Вы уверены, что это «TextBlock», а не «TextBox»? –

+0

Я забыл добавить TextBlock.I Просто добавил его, но у меня появилась другая ошибка: привязка не может быть установлена ​​в свойство Text типа Run. – olidev

5

Вы можете либо

1) выставить новое свойство на вашей модели представления и привязки к тому, что

Song 
{ 
    public string Name {get; set;} 
    public int ID {get; set;} 
    public string Header {get { return string.Format("{0} {1}", Name, ID); } } 
} 

2) использовать многосвязывание со строковым форматом

<TextBlock.Text> 
    <MultiBinding StringFormat="{}{0} {1}"> 
     <Binding Path="Song.Name"/> 
     <Binding Path="Song.Id"/> 
    </MultiBinding> 
</TextBlock.Text> 

3) Если вы используете WPF4, то Run является Привязываемым поэтому ответом относительно использования Run будут затем работать.

+0

Решение 1 Я не могу изменить внутри элемента управления. Решение 2 не работает с WPF 3.5. Я не могу изменить целевую инфраструктуру .net на 4. спасибо за обзор решений. Это очень помогает мне – olidev

+0

Решение №2 недействительно в .net 4. Источник не является связующим свойством. Правильный код

+0

@KevinKalitowski: Спасибо и исправлены. – Phil

Смежные вопросы