Xaml 全景标题模板、标题模板和项目模板的不同项目源

Xaml 全景标题模板、标题模板和项目模板的不同项目源,xaml,mvvm,panorama-control,Xaml,Mvvm,Panorama Control,我有一个全景图,其中ItemSource设置为在viewmodel中创建的ObservableCollection 在ViewModel.cs中 public ObservableCollection<UserSchema> SeriesData; private string _HeaderTitle; public string HeaderTitle { get { return _HeaderTit

我有一个全景图,其中ItemSource设置为在viewmodel中创建的ObservableCollection

在ViewModel.cs中

public ObservableCollection<UserSchema> SeriesData;

private string  _HeaderTitle;

    public string HeaderTitle
    {
        get
        {
            return _HeaderTitle;
        }
        private set
        {
            _HeaderTitle = value;
            NotifyPropertyChanged("HeaderTitle");
        }
    }
_objectPath属性的类似代码

我还有另一个HeaderSchema.cs,它也实现了InotifyPropertyChanged,并具有两个属性。我已经实现了公共getter和setter

private string _objectname;
private string _objectpath;

public string ObjectName
        {
            get 
            {
                return _objectName;
            }
            set 
            {
                _objectName = value;
                NotifyPropertyChanged("ObjectName");
            }
        }
private string _Title;

    public string Title
    {
        get
        {
            return _Title;
        }
        set 
        {
            _Title = value;
            NotifyPropertyChanged("Title");
        }

    }
我再次为上面的标题创建了一个公共get和set属性

现在,在MainPage.xaml中,我将Panaroma ItemSource设置为SeriesData,在代码后面的其他地方,我将DataContext设置为viewmodel

<controls:Panorama  x:Name="SerPan" ItemsSource="{Binding SeriesData}">

            <controls:Panorama.HeaderTemplate>
                <DataTemplate>
                    <Grid x:Name="grid">
                        <TextBlock  Text="{Binding ObjectName}">
                        </TextBlock>
                    </Grid>
                </DataTemplate>
            </controls:Panorama.HeaderTemplate>

            <controls:Panorama.ItemTemplate>
                <DataTemplate>
                    <Image Source="{Binding ObjectPath}"/>
                </DataTemplate>
            </controls:Panorama.ItemTemplate>

        </controls:Panorama>

这工作得很好,我得到了正确的输出

我想为全景设置一个标题,并从viewmodel的HeaderTitle属性中获取文本。 类似于下面的内容,但问题是HeaderTitle是另一个属性,而不是作为panorama的ItemSource的SeriesData的一部分

    <controls:Panorama.TitleTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding HeaderTitle}"> //does not work.
            </TextBlock>
        </DataTemplate>
    </controls:Panorama.TitleTemplate>

//不起作用。

如果ViewModel是全景控件的DataContext,则可以通过ElementName绑定访问它:

SerPan.DataContext = myViewModelInstance;

<phone:Panorama.HeaderTemplate>
    <DataTemplate>
        <TextBlock Text="{Binding ElementName=SerPan, Path=DataContext.HeaderTitle}" />
    </DataTemplate>
</phone:Panorama.HeaderTemplate> 
SerPan.DataContext=myViewModelInstance;