Odświeżanie ItemsControl w WPF

0

Witam.
Mam pewną zagwozdkę.
Otóż mam w aplikacji WPF na frameworku 4.5.2 kontrolkę typu ItemsControl z zadeklarowanym WrapPanel'em w ItemsPanelTemplate. Zawartość ItemTemplate jest dosyć duża gdyż umieściłem tam Border'a a w nim 6 kontrolek z bindingowaną zawartością, sterowanych triggerami.
Od jakiegoś czasu widzę pewien niepokojący efekt. Mianowicie widzę że najpierw rysują mi się same Border'y a dopiero potem ich zawartości. Efekt taki nie pojawia się zawsze tylko co jakiś czas. Komputer mam mocny (I5 z 12 MB RAM'u oraz dodatkową kartą graficzną oraz DirectX 11) a jednak taki efekt co jakiś czas mi się pojawia. Do tej pory tego nie było. Czy możecie mi wskazać co może być przyczyną takiego zachowania kontrolki?
Zamieszczam jej xaml'a.

<ItemsControl Grid.Row="1" Grid.Column="1" x:Name="ProductsListView" Padding="1" ItemsSource="{Binding ElementName=thisControl, Path=DisplayedElements}"
                              ScrollViewer.HorizontalScrollBarVisibility="Disabled">
                        <ItemsControl.ItemsPanel>
                            <ItemsPanelTemplate>
                                <WrapPanel ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.CanContentScroll="False"/>
                            </ItemsPanelTemplate>
                        </ItemsControl.ItemsPanel>

                        <ItemsControl.ItemTemplate>
                            <DataTemplate>

                                <Border CornerRadius="8,8,0,0" BorderBrush="Gray" BorderThickness="{Binding RelativeSource={RelativeSource AncestorType={x:Type prodSet:ProductsList}}, Path=BorderItemThickness}" 
                                        Margin="2" x:Name="border"
                                        Width="{StaticResource ProductListProductBrickWidth}" Height="{StaticResource ProductListProductBrickHeight}"              
                                        Background="{Binding Path=Color, Converter={StaticResource ProductColorToBrushConverter}}" RenderTransformOrigin="0.5,0.5"
                                        UseLayoutRounding="True" PreviewMouseLeftButtonDown="ProductsListView_MouseLeftButtonDown" PreviewMouseLeftButtonUp="ProductsList_MouseLeftUp" 
                                        Stylus.IsPressAndHoldEnabled="False"
                                        Tag="{Binding}" MouseLeave="border_MouseLeave">
                                    <Border.RenderTransform>
                                        <ScaleTransform ScaleX="1" ScaleY="1"/>
                                    </Border.RenderTransform>

                                    <Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
                                        <Grid.RowDefinitions>
                                            <RowDefinition Height="Auto"/>
                                            <RowDefinition Height="*"/>
                                            <RowDefinition Height="Auto"/>
                                            <RowDefinition Height="Auto"/>
                                            <RowDefinition Height="Auto"/>
                                        </Grid.RowDefinitions>

                                        <TextBlock Text="{Binding Index, Mode=OneWay, IsAsync=True}" HorizontalAlignment="Center" TextAlignment="Center" Margin="5,5,5,0"
                                                   Visibility="{Binding ElementName=thisControl, Path=IsDisplayIndex, Converter={StaticResource BoolToVisibilityConverter}, Mode=OneWay}"/>
                                        <koncept:TextBlockAutoSize Grid.Row="1" Text="{Binding Path=Description, Mode=OneWay, IsAsync=True}" HorizontalAlignment="Center" Margin="7,2" 
                                                   TextWrapping="WrapWithOverflow" TextAlignment="Center" x:Name="txt" VerticalAlignment="Center" />

                                        <Image Grid.Row="2" Source="{Binding Path=ProductImage, Mode=OneWay, IsAsync=True}" Margin="10,1" 
                                               Visibility="{Binding Path=ProductImage, Converter={StaticResource ImgToVisibilityConverter}, Mode=OneWay}" 
                                               MaxWidth="{StaticResource ProductListImageWidth}" MaxHeight="{StaticResource ProductListImageHeight}" Stretch="Uniform"  />

                                        <TextBlock Grid.Row="3" Text="{Binding Path=StockActualDescription, Mode=OneWay}"
                                                   HorizontalAlignment="Center" VerticalAlignment="Center" Margin="5,0"
                                                   Visibility="{Binding Path=StockActualDescription, Converter={StaticResource stringToVisibilityConverter},FallbackValue=Collapsed, Mode=OneWay}"/>

                                        <koncept:TextBlockAutoSize Grid.Row="4" Text="{Binding Path=PriceDescription, Mode=OneWay}"
                                                   HorizontalAlignment="Center" Margin="5,0,5,5"
                                                   Visibility="{Binding Path=PriceDescription, Converter={StaticResource stringToVisibilityConverter},FallbackValue=Collapsed, Mode=OneWay}"/>

                                        <TextBlock Grid.RowSpan="5" HorizontalAlignment="Right" VerticalAlignment="Bottom" Text="î" FontFamily="Wingdings" FontSize="16" Visibility="Collapsed" 
                                                   x:Name="textArrow" Margin="0,0,4,0"/>
                                    </Grid>

                                </Border>

                                <DataTemplate.Triggers>
                                    <EventTrigger RoutedEvent="Mouse.MouseDown">
                                        <EventTrigger.Actions>
                                            <BeginStoryboard>
                                                <Storyboard AutoReverse="True" Storyboard.TargetName="border">
                                                    
                                                    <DoubleAnimation Storyboard.TargetProperty="RenderTransform.ScaleX" 
                                                        To="1.02" Duration="0:0:0.05" />
                                                    <DoubleAnimation Storyboard.TargetProperty="RenderTransform.ScaleY" 
                                                        To="1.02" Duration="0:0:0.05" />
                                                </Storyboard>
                                            </BeginStoryboard>
                                        </EventTrigger.Actions>
                                    </EventTrigger>
                                    
                                    <DataTrigger Binding="{Binding IsUnderMinWarehouseState}" Value="true">
                                        <Setter TargetName="border" Property="BorderThickness" Value="2"/>
                                        <Setter TargetName="border" Property="BorderBrush" Value="Red"/>
                                    </DataTrigger>
                                    <!--<DataTrigger Binding="{Binding ProductImage}" Value="{x:Null}">
                                        <Setter TargetName="txt" Property="Grid.RowSpan" Value="2"/>
                                    </DataTrigger>-->
                                    <DataTrigger Binding="{Binding IsMenuDescriptions}" Value="true">
                                        <Setter TargetName="textArrow" Property="Visibility" Value="Visible"/>
                                    </DataTrigger>
                                </DataTemplate.Triggers>
                            </DataTemplate>
                        </ItemsControl.ItemTemplate>

                    </ItemsControl>
0

Na pewno 12 mb ram? ;) - litrmleka 10 minut temu

Nie no oczywiście że 12 GB RAM :)

0

Witam.
Problem rozwiązany.
Przyczyną takiego działania była opcja "IsAsync=True" w bindingu zawartości kontrolek. Wystarczyło usunąć ten wpis (co defacto wyłącza asynchroniczność bindowania) i efekt zniknął.

1 użytkowników online, w tym zalogowanych: 0, gości: 1