2016-10-23 66 views
-1

在HomePage.xaml不要綁定到MVVM中的View?

<Page.DataContext> 
    <ViewModel:GetTweetVM/> 
</Page.DataContext> 

列表視圖

<!--Content--> 
    <ListView x:Name="lstHome" 
          Grid.Row="2" 
          Margin="5" 
          ItemInvoked="lstHome_ItemInvoked" 
          ContainerContentChanging="lstHome_ContainerContentChanging" ItemsSource="{Binding statusList}"> 
     <ListView.ItemTemplate> 
      <DataTemplate> 
       <Grid> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="auto"></ColumnDefinition> 
         <ColumnDefinition Width="*"></ColumnDefinition> 
         <ColumnDefinition Width="auto"></ColumnDefinition> 
        </Grid.ColumnDefinitions> 

        <Image x:Name="imgThumbnailUser" Source="{Binding}"></Image> 

        <StackPanel Orientation="Vertical" Grid.Column="1"> 
         <StackPanel Orientation="Horizontal"> 
          <TextBlock x:Name="txtName" Text="{Binding Text}"></TextBlock> 
          <TextBlock x:Name="txtUsername" Text="{Binding User.Name}" Foreground="#CCCCCC"></TextBlock> 
         </StackPanel> 
         <TextBlock x:Name="txtContentMessage" Text="{Binding User.Categories.Name}" TextTrimming="CharacterEllipsis" Foreground="#CCCCCC"></TextBlock> 
        </StackPanel> 

        <TextBlock x:Name="txtDateTime" Text="{Binding}" Foreground="#CCCCCC"></TextBlock> 

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

在GetTweetVM

public class GetTweetVM 
{ 
    TwitterContext twitter; 

    public List<Status> statusList { get; set; } 
    public GetTweetVM() 
    { 
     statusList = new List<Status>(); 
     if (SharedState.Authorizer != null) 
     { 
      twitter = new TwitterContext(SharedState.Authorizer); 
      GetTweet(); 
     } 
     else 
      return; 

    } 

    public async void GetTweet() 
    { 
     //base.GetTweet(); 
     var objectStatus = await (from status in twitter.Status 
          where status.Type == LinqToTwitter.StatusType.Home && status.Count==10 
          select status).ToListAsync(); 
     foreach(var item in objectStatus) 
     { 
      statusList.Add(item); 
     } 
     string t = statusList[0].Text; 
    } 
} 

結果:

  1. 串T從statusList將獲得價值 - >「fadsvs .......... 「
  2. 在xaml上它沒有綁定到視圖。
  3. Listview是沒有數據。

我不知道它在哪裏錯了?請幫我解決它。

+1

對於初學者來說,你的'名單'真的應該是一個'的ObservableCollection '要不修改列表將不會更新'ListView'。 –

+0

你可以自己定製我的代碼嗎?爲了更好的?。我靠它 –

+0

我不明白你的問題。鑑於你缺乏英語水平,你應該花更多時間瞭解具體情況。確保你包含一個能夠可靠地重現問題的好的[mcve],並且確保你包含任何錯誤消息,異常等的引用(最好也用英文表示)...將UI文化設置爲「en 「 如果你需要)。當存在語言障礙時,代碼和機器生成的輸出是通用的,並且更容易理解。 –

回答

1

如果我理解正確,你必須從視圖模型通知問題查看

試試下面

public ObservableCollection<Status> statusList { get; set; } 

的ObservableCollection將確保通知UI當添加任何項目。

更多的ObservableCollection

What is the use of ObservableCollection in .net?

希望這有助於。

0

當然就應該更換:

public List<Status> statusList { get; set; } 

有:

public ObservableCollection<Status> statusList { get; set; } 

當你永遠與MVVM和數據綁定,你應該使用的ObservableCollection,所以當列表被改變,你可以得到的UI通知工作。請注意,如果列表中的某些對象屬性僅更改了列表本身(元素已被添加/刪除或在列表中移動),UI通知將不會被觸發。它的因爲ObservableCollection觸發事件只有當集合被改變時不是和列表中的對象屬性。

希望它可以幫助