обновить tabcontrol только для заголовка tabitem, а не для всего содержимого tabitem - PullRequest
0 голосов
/ 02 мая 2019

Я хочу показать загрузочный gif в заголовке tabitems в WPF C #, мои tabitems генерируются динамически и заменять загрузочный gif конкретным favicon, если он доступен, поэтому, когда я делаю this.tabcontrol.items.refresh, все мои вкладки обновляются вместе с их содержимым, поэтому весь экран дергается при обновлении всего экрана.

Я пробовал this.tabcontrol.items.refresh (), но он обновляет все вкладки с их содержимым.

Это для укладки

 <Setter Property="ContentStringFormat" Value="{Binding Path=timergif ,diagnostics:PresentationTraceSources.TraceLevel=High}"></Setter>
            <Setter Property="Tag" Value="{Binding Path=LabelText2 ,diagnostics:PresentationTraceSources.TraceLevel=High}"></Setter>
            <Setter Property="Header"  Value="{Binding Path=LabelText ,diagnostics:PresentationTraceSources.TraceLevel=High}" />

 <Style  TargetType="{x:Type tab:FabTabItem}">
            <Setter Property="ContentStringFormat" Value="{Binding Path=timergif ,diagnostics:PresentationTraceSources.TraceLevel=High}"></Setter>
            <Setter Property="Tag" Value="{Binding Path=LabelText2 ,diagnostics:PresentationTraceSources.TraceLevel=High}"></Setter>
            <Setter Property="Header"  Value="{Binding Path=LabelText ,diagnostics:PresentationTraceSources.TraceLevel=High}" />

            <Setter Property="Height" Value="30" />

            <Setter Property="Background" Value="{DynamicResource MyFillBrush}" />
            <Setter Property="HeaderTemplate">
                <Setter.Value>
                    <DataTemplate>
                        <StackPanel Orientation="Horizontal">

                            <!--<Image Height="25" Margin="4,0,4,0"
        Source="{Binding Tag, Mode=TwoWay, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TabItem}}}" />-->
                            <!--<MediaElement Height="25" Width="25" Margin="4,0,4,0" x:Name="myGif"  UnloadedBehavior="Manual"     Source="Loading_icon.gif" LoadedBehavior="Play" Stretch="None"/>-->

                            <Image Width="20"  gif:ImageBehavior.AnimatedSource="{Binding Tag, Mode=OneWay, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TabItem}}}" />
                            <Label Content="{Binding}"/>
                            <Image Width="20"  gif:ImageBehavior.AnimatedSource="{Binding ContentStringFormat, Mode=OneWay, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TabItem}}}" />
                          <!--<Image Width="20"  gif:ImageBehavior.AnimatedSource="{Binding Path=(local:BrowserWindow.LabelText),RelativeSource={RelativeSource TemplatedParent} }" />-->
                            <!--<StackPanel Orientation="Vertical">
                                --><!--<Image Height="25" Margin="4,0,4,0"
        Source="{Binding Tag, Mode=TwoWay, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TabItem}}}" />-->
                                <!--<MediaElement Height="25" Width="25" Margin="4,0,4,0" x:Name="myGif"  UnloadedBehavior="Manual"     Source="Loading_icon.gif" LoadedBehavior="Play" Stretch="None"/>--><!--



                            </StackPanel>-->
                        </StackPanel>


                    </DataTemplate>

                </Setter.Value>
            </Setter>
            <!--<Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type tab:FabTabItem}">
                        <Border Name="Border" BorderThickness="1,1,1,0" BorderBrush="Gainsboro" CornerRadius="4,4,0,0" Margin="2,0">
                            <ContentPresenter x:Name="ContentSite"
                                        VerticalAlignment="Center"
                                        HorizontalAlignment="Center"
                                        ContentSource="Header"
                                        Margin="10,2"/>
                        </Border>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsSelected" Value="True">
                                <Setter TargetName="Border" Property="Background" Value="LightSkyBlue" />
                            </Trigger>
                            <Trigger Property="IsSelected" Value="False">
                                <Setter TargetName="Border" Property="Background" Value="GhostWhite" />
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>-->
        </Style>   

  _mainForm.tabControl.Items.Refresh();

Я ожидаю обновить только изображение в заголовке определенного табита.

...