【发布时间】:2014-02-09 10:09:41
【问题描述】:
我有一个全景图,其中 ItemSource 设置为在视图模型中创建的 ObservableCollection
在 ViewModel.cs 中
public ObservableCollection<UserSchema> SeriesData;
private string _HeaderTitle;
public string HeaderTitle
{
get
{
return _HeaderTitle;
}
private set
{
_HeaderTitle = value;
NotifyPropertyChanged("HeaderTitle");
}
}
HeaderTitle 的值来自 HeaderSchema 类的 Title 属性(见下文)。这是在此处未显示的视图模型构造函数中的其他位置设置的。
UserSchema.cs 包含实现了 INotifyProperyChanged 并具有两个属性的 UserSchema。我已经实现了公共 getter 和 setter
private string _objectname;
private string _objectpath;
public string ObjectName
{
get
{
return _objectName;
}
set
{
_objectName = value;
NotifyPropertyChanged("ObjectName");
}
}
_objectPath 属性也有类似的代码。
我还有另一个 HeaderSchema.cs,它也实现了 INotifyProperyChanged 并具有两个属性。我已经实现了公共 getter 和 setter
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 是一个不同的属性,而不是 SeriesData 的一部分,SeriesData 是全景图的 ItemSource。
<controls:Panorama.TitleTemplate>
<DataTemplate>
<TextBlock Text="{Binding HeaderTitle}"> //does not work.
</TextBlock>
</DataTemplate>
</controls:Panorama.TitleTemplate>
【问题讨论】:
标签: xaml mvvm panorama-control