Ниже приведен список (код ниже), который я использую. Всякий раз, когда я очищаю наблюдаемую привязку коллекции к источнику элементов и добавляю новые элементы в коллекцию, я наблюдаю легкое мерцание. Я попытался очистить коллекцию переходов, но это отключает только анимацию, мерцание все еще сохраняется.
Есть мысли?
<ListView SelectionMode="None" x:Name="View"
Grid.Row="1"
ItemsSource="{x:Bind Details,Mode=OneWay}"
ItemTemplateSelector="{StaticResource TestModuleTemplateSelector}"
ScrollViewer.VerticalScrollBarVisibility="Auto"
ShowsScrollingPlaceholders="False"
ScrollViewer.HorizontalScrollMode="Auto"
ScrollViewer.HorizontalScrollBarVisibility="Auto">
<ListView.ItemContainerTransitions>
<TransitionCollection/>
</ListView.ItemContainerTransitions>
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</ListView.ItemContainerStyle>
</ListView>
В моем userControl xaml.cs я имею следующее
private ObservableCollection<TestEntityBase> _Details = new ObservableCollection<TestEntityBase>();
public ObservableCollection<TestEntityBase> Details
{
get { return _Details; }
set
{
SetProperty(ref _Details, value);
}
}
Следующее пользовательское событие (подписанное userControl.xaml.cs) заботится о добавлении элементов в наблюдаемую коллекцию выше. Это событие вызывается нажатием кнопки другого пользовательского элемента управления. Каждый раз, когда нажимается кнопка, элементы очищаются и добавляются.
private void OnLoadingModuleEntity(IList<EntityBase> entities)
{
Details.Clear();
foreach (EntityBase entity in entities)
{
TestEntityBase entityBase = new TestEntityBase();
// Conversion logic goes here
//
Details.Add(entityBase);
}
}
Используемый шаблон данных
<Grid Margin="0,10,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal">
<TextBlock Name="Sync" FontFamily="Segoe MDL2 Assets"
Text="" VerticalAlignment="Center" FontSize="10"
ToolTipService.Placement="Top"
Margin="0,0,10,0" Visibility="{x:Bind IsSyncVisible,Mode=OneWay,Converter={StaticResource BoolToVisibilityConverter}}"/>
<CheckBox x:Name="CheckBox"
IsThreeState="False" Opacity="0.2"
MinWidth="10"/>
</StackPanel>
<Border Grid.Column="1" BorderThickness="0,0,0,1" Height="40" BorderBrush="#f0f0f0">
<Grid>
<RelativePanel VerticalAlignment="Center">
<TextBlock Name="Name" Text="{x:Bind Name}"
VerticalAlignment="Center" Opacity="0.5"
TextWrapping="Wrap"/>
<Image Name="Dot1" Source="/test/Assets/abc.jpg"
Height="6" Width="6"
VerticalAlignment="Center" Margin="10,8,0,0"
RelativePanel.RightOf="Name" />
<TextBlock Name="Date1" Text="{x:Bind date2String}" Opacity="0.5"
VerticalAlignment="Center" Margin="10,0,0,0"
RelativePanel.RightOf="Dot1" />
<Image Name="Dot2" Source="/test/Assets/321.jpg"
Height="6" Width="6"
VerticalAlignment="Center" Margin="10,8,0,0"
RelativePanel.RightOf="Date1"/>
<Image Name="Name2" Source="/test/Assets/123.jpg"
Height="10" Width="10"
VerticalAlignment="Center" Margin="10,5,0,0"
RelativePanel.RightOf="Dot2"/>
<TextBlock Name="Others Text="{x:Bind Others}" Opacity="0.5"
VerticalAlignment="Center" Margin="10,0,0,0"
RelativePanel.RightOf="Name2"/>
</RelativePanel>
</Grid>
</Border>
</Grid>