Обязательный заголовок панорамы - PullRequest
3 голосов
/ 14 февраля 2012

Я работаю с приложением WP7, используя элемент управления Panorama, и у меня проблема с привязкой к свойству Panorama Title.Можно ли привязать это значение из объекта ViewModel?

Привязка в файле xaml:

<controls:Panorama x:Name="prmPanorama" Title="{Binding Voyage.Title}">

Свойство Voyage объекта ViewModel - это объект Model (со свойством Title внутри), при котором событие OnNotifyPropertyChanged сработалокаждый раз, когда он изменяется:

private Voyage _voyage;
public Voyage Voyage
{
    get { return _voyage; }
    set
    {
        if (_voyage != value)
        {
            _voyage = value;
            OnNotifyPropertyChanged("Voyage");
        }
    }
}

Когда я связываю то же свойство в другой элемент управления, например.TextBlock, привязка работает просто отлично:

<TextBlock Text="{Binding Voyage.Title}" />

Текст, показанный в этом текстовом блоке, такой, каким он должен быть, но в то же время заголовок панорамы не связан правильно - он свернут.

кто-нибудь пытался сделать такую ​​привязку?Я понятия не имею, почему это не работает.

1 Ответ

1 голос
/ 14 февраля 2012
    <DataTemplate x:Key="TitleDataTemplate"> 
       <TextBlock Text="{Binding}" /> 
    </DataTemplate>
    ... 
    <controls:Panorama Title="{Binding Voyage.Title}" 
                       TitleTemplate="{StaticResource TitleDataTemplate}">

Шаблон элемента управления панорамой использует предъявитель содержимого для отображения любого значения, которое его свойство title имеет вид кнопки. При установке свойства шаблона заголовка вы косвенно устанавливаете шаблон содержимого предъявителя содержимого.

Вот почему вы должны установить свойство title в элементе управления Panorama, а затем использовать это значение в шаблоне заголовка для привязки. Другими словами, недостаточно просто привязать заголовок, нужно дать ему шаблон.

Проверьте эту ссылку для получения дополнительной информации

...