2014-02-09 31 views
0

我已經在使用C#/ XAML和MVVM-Light-Toolkit的Windows 8.1應用程序中獲得了簡單的數據綁定,但它不起作用。我想顯示一個列表,列出從早上六點到第二天六點的時間。下面是相關代碼:簡單綁定不起作用

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編輯綁定:現在完整的層次顯示:

 <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中的錯誤對象?我對這個問題感到非常沮喪 - 我無法弄清楚這裏有什麼問題。

編輯:有關定位器信息:

定位器是由MVVM光強工具包中提供的標準定位器:

這裏是與視圖模型的登記類:

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

我已經解決了這個問題。

我上面發佈的ListView是在一個DataTemplate本身內。我有點忘了提供這些信息。一旦我從模板中刪除它,綁定工作正常。