2017-10-19 2 views
0

J'utilise le contrôle de tabulation wpf et en définissant l'icône et le texte dans l'en-tête de tabulation par style, je suis en mesure de définir le texte dynamiquement par getter et setter Impossible de définir la source de l'image. J'ai essayé de lier la source d'image par l'intermédiaire du getter et du setter mais j'ai échoué. Voici le code de style dans lequel je veux définir la source d'image dynamiquement à partir du code derrière. ->Appelez la source d'image GIF à partir du code derrière WPF C# pour le setter de tabcontrol

 <Setter Property="HeaderTemplate" > 

      <Setter.Value> 

       <DataTemplate> 
        <StackPanel Orientation="Horizontal"> 
         <!--<Image gif:ImageBehavior.AnimatedSource="{DynamicResource MyFillBrush}" Width="20" />--> 

         <Image gif:ImageBehavior.AnimatedSource="25.gif" Width="20" /> 
         <Label Content="{Binding }"/> 

        </StackPanel> 

       </DataTemplate> 

      </Setter.Value> 

     </Setter> 

Répondre

-1

Peut-être que vous pouvez utiliser Binding, quelque chose comme

private string _dynamicGif = "test.gif"; 
public string DynamicGif 
{ 
    get { return _dynamicGif; } 
    private set 
    { 
     _dynamicGif = value; 
     RaisePropertyChanged("DynamicGif"); 
    } 
} 

et

<Image gif:ImageBehavior.AnimatedSource="{Binding DynamicGif, UpdateSourceTrigger=PropertyChanged}" Width="20" /> 

Ou, si cela ne fonctionne pas, vous pouvez utiliser MediaElement au lieu de Image, il ne nécessitera pas GIF animé GIF. Il est également assez simple à utiliser:

private Uri _imgSource = new Uri("test.gif"); 
public Uri ImgSource 
{ 
    get { return _imgSource; } 
    private set 
    { 
     _imgSource = value; 
     RaisePropertyChanged("ImgSource"); 
    } 
} 

et

<MediaElement x:Name="gifImg" LoadedBehavior="Play" Width="20" Source="{Binding ImgSource}"/> 

Hope this helps.

+0

Je ne pourrai pas appeler RaisePropertyChanged, Comment puis-je l'appeler? – Ebaad

+0

@Ebaad, je ne sais pas si j'ai compris votre question. Voulez-vous dire que vous n'êtes pas en mesure de définir ces propriétés dans le modèle de vue ou le code-behind? Comment changez-vous le texte de Label, est-ce lié à une propriété? –

+0

Ouais c'est exactement ce que je veux dire, je ne suis pas en mesure d'appeler cette étiquette d'image dans le code derrière afin que je puisse changer le temps d'exécution des images ou désactiver la visibilité en cas de besoin. – Ebaad