#uwp #uwp-xaml
#uwp #uwp-xaml
Вопрос:
Я использую элемент управления Carousel, где значение параметра ItemMargin вычисляется в серверной части следующим образом:
MainPage.xaml
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:controls="using:Microsoft.Toolkit.Uwp.UI.Controls"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
x:Name ="DemoControl"
SizeChanged="SizeChanged"
mc:Ignorable="d">
<Grid>
<Border Margin="0">
<controls:Carousel x:Name="CarouselControl"
InvertPositive="True"
ItemDepth="300"
ItemRotationX="0"
ItemRotationY="45"
ItemRotationZ ="0"
Orientation="Horizontal"
SelectedIndex="4">
<controls:Carousel.EasingFunction>
<CubicEase EasingMode="EaseOut" />
</controls:Carousel.EasingFunction>
<controls:Carousel.ItemTemplate>
<DataTemplate>
<Image Width="200"
Height="200"
VerticalAlignment="Bottom"
Source="{Binding Thumbnail}"
Stretch="Uniform" />
</DataTemplate>
</controls:Carousel.ItemTemplate>
</controls:Carousel>
</Border>
Код, лежащий в основе MainPage.xaml.cs
public sealed partial class MainPage
{
private void SizeChanged(object sender, SizeChangedEventArgs e)
{
this.UpdateMargin();
}
private void UpdateMargin()
{
this.DemoControl.ItemMargin = 500;
}
}
Я заметил, что при первой загрузке страницы объекты приближаются, но после прокрутки элемента управления расстояние увеличивается, а затем остается неизменным. Требуется ли некоторое время для обновления ItemMargin здесь?
Ответ №1:
UWP Элемент поля элемента управления каруселью требует времени для обновления?
Во время тестирования поле карусели могло отображаться правильно после загрузки первой страницы. Мы не можем предварительно представить вашу проблему. Однако я обнаружил, когда вы UpdateMargin
на странице SizeChanged
. Событие загрузки карусели еще не запущено. Я полагаю, что это будет проблема, описанная выше. В общем, если вы хотите обновить ItemMargin
свойство, мы рекомендуем поместить его в событие Carousel loaded .
private void CarouselControl_Loaded(object sender, RoutedEventArgs e)
{
UpdateMargin();
}
Это может гарантировать, что свойство ItemMargin будет доступно.