0
我有一個XAML頁面:的WinRT FlipView綁定失敗可能
<Page x:Class="DailyStyleW8.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:DailyStyleW8"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:converters="using:DataTypes"
mc:Ignorable="d">
<Page.Resources>
<converters:PortableImageConverter x:Key="ImageConverter" />
</Page.Resources>
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
<Grid>
<ProgressBar x:Name="loadingViewer"
IsIndeterminate="True"
Height="20" />
<FlipView x:Name="displayViewer"
ItemsSource="{Binding}"
Visibility="Collapsed">
<FlipView.ItemTemplate>
<DataTemplate>
<Grid>
<Image Source="{Binding Image,Converter={StaticResource ImageConverter}}" />
<TextBlock Text="{Binding Name}" />
</Grid>
</DataTemplate>
</FlipView.ItemTemplate>
</FlipView>
</Grid>
</Grid>
</Page>
,並在代碼隱藏文件:
using DailyStyleApp;
using PortableAPI;
using System;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Navigation;
namespace DailyStyleW8
{
/// <summary>
/// Display a list of recent updates to the user
/// </summary>
public sealed partial class MainPage : Page
{
Controller controller = new Controller();
public MainPage()
{
this.InitializeComponent();
}
/// <summary>
/// Invoked when this page is about to be displayed in a Frame.
/// </summary>
/// <param name="e">Event data that describes how this page was reached. The Parameter
/// property is typically used to configure the page.</param>
protected override void OnNavigatedTo(NavigationEventArgs e)
{
LoadContent();
}
private async void LoadContent()
{
var viewModel = await controller.GetMultiDayAsync(DateTime.Now, PortableAPIProvider.Storage.ReadFromSettings<int>("CacheDuration", 7));
displayViewer.ItemsSource = viewModel.Items;
displayViewer.Visibility = Windows.UI.Xaml.Visibility.Visible;
loadingViewer.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
}
}
}
現在,當我運行代碼的LoadContent
函數正確調用和viewModel
對象形成正確。如果我註釋掉displayViewer.ItemsSource = viewModel.Items;
這一行,則ProgressBar
的可見性會根據您的預期發生變化。
當該行留在並通過LoadContent
方法中的所有4條線踩在運行,但FlipView
不會更新與新的項目和ProgressBar
知名度不改變。 viewModel.Items
是List<T>
的類型。
我甚至確定在這裏真正要搜索什麼。我猜測XAML和我的綁定有問題嗎?
GetMultiDayAsync是否會返回? – 2013-04-20 15:33:06
是的,它全部由正確的數據組成。我也嘗試將它返回的列表複製到班級中的新列表中,但仍然沒有快樂。 'displayViewer.ItemsSource = viewModel.Items;'是特定的調用,似乎使一切都出錯了。 – 2013-04-20 16:09:43
我發現了別的東西,似乎我認爲是問題的線也會導致UI線程鎖定? 使用'displayViewer.ItemsSource = viewModel.Items'註釋掉它允許我用Alt + F4關閉應用程序,但是如果我取消註釋該行,應用程序在Alt + F4上不會關閉。 – 2013-04-21 12:12:28