我正在尝试使用 Caliburn.Micro 显示Collection
的内容,但由于某些原因,屏幕上没有输出。
以下是代码:
(SearchView.xaml)
<ListBox x:Name="Items">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
(SearchViewModel.cs)
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using Caliburn.Micro;
namespace MyNS.ViewModels
{
public class SearchViewModel : Screen
{
private BindableCollection<string> _items;
public BindableCollection<string> Items
{
get { return _items; }
set
{
_items = value;
NotifyOfPropertyChange(() => Items);
}
}
private string _selectedItem;
public string SelectedItem
{
get { return _selectedItem; }
set
{
_selectedItem = value;
NotifyOfPropertyChange(() => SelectedItem);
MessageBox.Show(value);
}
}
public SearchViewModel()
{
Items = new BindableCollection<string>
{
"item1",
"item2",
"item3",
"item4"
};
DisplayName = "by genre";
}
}
}
记录器打印时
[2013-12-16T21:52:29.9208275 + 01:00]应用于Items的SelectedItem绑定。 [2013-12-16T21:52:29.9208275 + 01:00]应用约束公约:元素项。
这意味着一切都很顺利,我仍然不明白为什么我的ListBox
显示没有数据。
没有抛出任何异常,一切都运行平稳但数据未显示。
答案 0 :(得分:0)
我在使用Caliburn Micro进行自定义ItemTemplate
时遇到了一些问题。因此,每当我使用一个时,我只使用ItemSource
绑定:
<ListBox ItemSource={Binding Items}>
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding .}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>