我试图使用 DataTemplate 显示一个单独的项(不包含在集合中)。这是我到目前为止的代码,但什么也没有显示出来。将
ItemsControl
替换为 ListBox
会显示一个空的列表框(所以我知道元素存在)。 <ItemsControl
ItemsSource="{Binding Session}"
ItemTemplate="{StaticResource SessionHeaderDataTemplate}"
/>
Session
是一个单独的对象。我想使用DataTemplate,因为我在我的应用程序中的其他地方也显示相同的信息,并且希望将呈现样式定义为资源,以便我可以在一个地方进行更新。
有什么想法,还是我应该在ViewModel中创建一个只含1个元素的集合并绑定到它?
编辑:这就是我最终所做的,尽管下面的答案也是一种解决方案。我非常喜欢我的DataTemplates
,所以不太喜欢把这样的东西推出到另一个XAML文件中。
XAML:
<ItemsControl
DataContext="{Binding}"
ItemsSource="{Binding Session_ListSource}"
ItemTemplate="{StaticResource SessionHeaderDataTemplate}" />
视图模型:
private Session m_Session;
public Session Session
{
get { return m_Session; }
set
{
if (m_Session != value)
{
m_Session = value;
OnPropertyChanged("Session");
// Added these two lines
Session_ListSource.Clear();
Session_ListSource.Add(this.Session);
}
}
}
// Added this property.
private ObservableCollection<Session> m_Session_ListSource = new ObservableCollection<Session>();
public ObservableCollection<Session> Session_ListSource
{
get { return m_Session_ListSource; }
set
{
if (m_Session_ListSource != value)
{
m_Session_ListSource = value;
OnPropertyChanged("Session_ListSource");
}
}
}