Caliburn.Micro集合显示为空

时间:2013-12-18 14:39:35

标签: c# xaml windows-phone-8 listbox caliburn.micro

我正在尝试使用 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显示没有数据。

没有抛出任何异常,一切都运行平稳但数据未显示。

1 个答案:

答案 0 :(得分:0)

我在使用Caliburn Micro进行自定义ItemTemplate时遇到了一些问题。因此,每当我使用一个时,我只使用ItemSource绑定:

<ListBox ItemSource={Binding Items}>
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel>
                <TextBlock Text="{Binding .}" />
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>