Xaml 全景标题模板、标题模板和项目模板的不同项目源
我有一个全景图,其中ItemSource设置为在viewmodel中创建的ObservableCollection 在ViewModel.cs中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
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;