2013-12-18 3 views
0

Я пытаюсь показать содержимое Collection с использованием Caliburn.Micro, но по некоторым причинам на экране нет выхода.Коллекция Caliburn.Micro показана пустой

Вот код:

(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] SelectedItem привязка применяется к Предметы. [2013-12-16T21: 52: 29.9208275 + 01: 00] Применяемая конвенция: Элементы элемента.

Это означает, что все пошло нормально, я все еще не понимаю, почему мои ListBox показов без данных.

Исключение не выбрасывается, все работает гладко, но данные не отображаются.

ответ

0

У меня было несколько вопросов, выполняющих обычай ItemTemplate с Caliburn Micro. Поэтому вместо того, чтобы всякий раз, когда я использую один, я просто использовать ItemSource связывания:

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

Я пытаюсь узнать 'Caliburn.Micro' только потому, что это выглядело так гладко, без необходимости ручного связывания материала, но я думаю, что это ситуация, в которой нет другого способа заставить ее работать: \ – StepTNT

+0

@StepTNT Это здорово, если вы хотите делать очень общие вещи. Если вы хотите много настраиваемых материалов, лучше не использовать его. – gleng

Смежные вопросы