Я пытаюсь отобразить один элемент (не содержащийся в коллекции) с использованием DataTemplate. Вот что у меня так далеко, что ничего не показывает. Замена ItemsControl
на ListBox
отображает пустой список (так что я знаю, что элемент там).
<ItemsControl
ItemsSource="{Binding Session}"
ItemTemplate="{StaticResource SessionHeaderDataTemplate}"
/>
Session
- это отдельный объект. Я хочу использовать DataTemplate, потому что я отображаю ту же информацию в другом месте моего приложения и хотел, чтобы стиль представления был определен как ресурс, чтобы я мог обновить его в одном месте.
Любые идеи, или я должен создать коллекцию из 1 элемента в моей модели представления и привязать к ней?
Изменить: Это то, что я в конечном итоге сделал, хотя ответ ниже также решение. Я довольно привязан к своему DataTemplates
, поэтому не чувствовал себя комфортно, когда что-то подобное выталкивалось в другой файл XAML.
XAML:
<ItemsControl
DataContext="{Binding}"
ItemsSource="{Binding Session_ListSource}"
ItemTemplate="{StaticResource SessionHeaderDataTemplate}" />
ViewModel:
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");
}
}
}