2014-02-09 3 views
0

У меня есть простая привязка данных в приложении Windows 8.1 с использованием C#/XAML, а также MVVM-Light-Toolkit, и она не работает. Я хочу отобразить список, в котором указано время с 6 часов утра до 6 часов на следующий день. Вот соответствующий код:Простая привязка не работает

public class DayViewViewModel : ViewModelBase 
{ 
    private ObservableCollection<DateTime> _TimesList = null; 

    /// <summary> 
    /// Sets and gets the TimesList property. 
    /// Changes to that property's value raise the PropertyChanged event. 
    /// </summary> 
    public ObservableCollection<DateTime> TimesList 
    { 
     get 
     { 
      return _TimesList; 
     } 

     set 
     { 
      if (_TimesList == value) 
      { 
       return; 
      } 

      RaisePropertyChanging(TimesListPropertyName); 
      _TimesList = value; 
      RaisePropertyChanged(TimesListPropertyName); 
     } 
    } 

    public void CreateTimes() 
    { 
     TimesList = new ObservableCollection<DateTime>(); 
     for (int i = 0; i < 24; i++) 
     { 
      TimesList.Add(DateTime.MinValue.AddHours(6 + i)); 
     } 
    } 
} 

Теперь связывание в XAML EDIT: Полная иерархия отображается в настоящее время:

 <ListView> 
      <ListView.ItemTemplate> 
       <DataTemplate> 
        <Grid> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition Width="0.7*"/> 
          <ColumnDefinition Width="2*"/> 
         </Grid.ColumnDefinitions> 


         <ListView Grid.Column="0" 
            ItemsSource="{Binding Day.TimesList, Mode=TwoWay, Source={StaticResource Locator}}" 
            ItemTemplate="{Binding Source={StaticResource DayCalendarTimesItemTemplate}}"> 
         </ListView> 

        </Grid> 
       </DataTemplate> 
      </ListView.ItemTemplate> 
     </ListView> 

И шаблон:

<DataTemplate x:Key="DayCalendarTimesItemTemplate"> 
    <Grid Height="80"> 
     <TextBox Text="{Binding Date}"/> 
    </Grid> 
</DataTemplate> 

Ну, я думаю, что я Я привязываюсь к неправильному объекту в TextBox? Я очень расстроен этой проблемой - я просто не могу понять, что здесь не так.

EDIT: Информация о локаторе:

локатор стандартного локатор обеспечивается MVVM-Light Toolkit:

Вот класс с регистрацией этого ViewModel:

public class ViewModelLocator 
{ 
    /// <summary> 
    /// Initializes a new instance of the ViewModelLocator class. 
    /// </summary> 
    public ViewModelLocator() 
    { 
     ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default); 

     SimpleIoc.Default.Register<DayViewViewModel>(); 
    } 

    public DayViewViewModel Day 
    { 
     get 
     { 
      return ServiceLocator.Current.GetInstance<DayViewViewModel>(); 
     } 
    } 
} 

Локатор создается в App.xaml:

<Application.Resources> 
    <ResourceDictionary> 
     <vm:ViewModelLocator x:Key="Locator"/> 
    [...] 
    </ResourceDictionary>  
</Application.Resources> 

Большое спасибо за вашу помощь!

FunkyPeanut

+1

Вы попробовали ''? – dkozl

+0

Да - к сожалению – FunkyPeanut

+1

Отображает ли он список пустых 'TextBoxes' или вообще ничего? – dkozl

ответ

0

Я решил эту проблему.

Список, который я разместил выше, находился внутри самого DataTemplate. Я как бы забыл дать эту информацию. Как только я удалил его из шаблона, привязка работала нормально.

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