Я возился с некоторыми разработками для Windows Phone, так как я новичок в этом, исходя из фона Android.
Я использую «theCatAPI», чтобы загрузить случайное изображение кошки и показать его, а затем при нажатии на изображение или кнопку внизу экрана изображение обновляется до нового.
У меня пока следующее:
XAML:
<Page
x:Class="CatFactsPics.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:CatFactsPics"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Grid x:Name="LayoutRoot">
<Grid.ChildrenTransitions>
<TransitionCollection>
<EntranceThemeTransition/>
</TransitionCollection>
</Grid.ChildrenTransitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<!-- TitlePanel -->
<StackPanel Grid.Row="0" Margin="24,17,0,28">
<TextBlock Text="My Application" Style="{ThemeResource TitleTextBlockStyle}" Typography.Capitals="SmallCaps"/>
<TextBlock Text="page title" Margin="0,12,0,0" Style="{ThemeResource HeaderTextBlockStyle}"/>
</StackPanel>
<!--TODO: Content should be placed within the following grid-->
<Grid Grid.Row="1" x:Name="ContentRoot">
<Image HorizontalAlignment="Center" Stretch="UniformToFill" VerticalAlignment="Center" x:Name="KittyPic" Tapped="KittyPic_Tapped"/>
<Button HorizontalAlignment="Center" VerticalAlignment="Bottom" x:Name="newPic" Click="newPic_Click" >New Kitty</Button>
</Grid>
</Grid>
</Page>
и в page.cs:
...
protected override void OnNavigatedTo(NavigationEventArgs e)
{
this.navigationHelper.OnNavigatedTo(e);
Uri myUri = new Uri("http://thecatapi.com/api/images/get?format=src&type=jpg", UriKind.Absolute);
KittyPic.Source = new BitmapImage(myUri);
}
...
private void newPic_Click(object sender, RoutedEventArgs e)
{
Uri myUri = new Uri("http://thecatapi.com/api/images/get?format=src&type=jpg", UriKind.Absolute);
BitmapImage bmi = new BitmapImage();
bmi.CreateOptions = BitmapCreateOptions.IgnoreImageCache;
bmi.UriSource = myUri;
KittyPic.Source = bmi;
}
У меня есть пара вопросов:
1) это правильный способ ведения дел? В Android я бы попытался сделать что-то асинхронно, чтобы избежать остановки потока пользовательского интерфейса. При этом у меня, похоже, нет никаких проблем с тем, что есть сейчас. Я не знаком с тем, как работает Windows, и не нашел никаких ресурсов, дающих какие-либо объяснения или советы по этому поводу.
2) Существует задержка в отображении нового изображения, вызывающая короткий (несколько секунд) период, когда изображение становится черным, прежде чем новое изображение появится снова. Есть ли способ настроить его так, чтобы либо старое изображение оставалось до тех пор, пока новое физически не будет готово к отображению, либо, в качестве альтернативы, отображало «загружающееся» изображение заполнителя, пока новое не сможет его заменить.
Любые другие советы или подсказки о том, как что-то делать, были бы замечательными, спасибо.