IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Framework .NET Discussion :

Pb de binding entre resource, Xpath, et Binding


Sujet :

Framework .NET

  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 14
    Points : 9
    Points
    9
    Par défaut Pb de binding entre resource, Xpath, et Binding
    J'ai exporté des resources depuis Expression design, elles sont sous la forme d'elements DrawImage avec un x:Key à chaque fois. J'ai un fichier XML qui comporte un collection d'objet, chaque object contient une balise image avec comme id le nom de l'une de mes resources citée precedement. Lorsque de fait explicitement reference dans mon datatemplate a l'une de mes resources celle ci s'affiche correctement, par contre lorsque je fait du binding avec xpath, blend m'affiche dans la propriété content l'image souhaité correctement, alors que du coté application j'obtiens le nom du type de l'image soit DrawImage.

    Quelqu'un aurait il une idée?

    Merci

  2. #2
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Bonjour, je me reponds à moi même:

    Je ne sait pas pourquoi ca ne marchait pas avant mais maintenant c'est OK.

    coté XAML

    resource: <DrawingImage x:Key="symbol_chat" .../>

    app xaml:

    ....
    <Button Style="{DynamicResource RightButtonStyle}" Width="80" Height="80" >
    <Image Margin="15,15,15,15" Width="50" Height="50" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
    <Image.Source>
    <MultiBinding Converter="{StaticResource ImageResourceConverter}" >
    <Binding RelativeSource="{RelativeSource Self}" />
    <Binding Mode="OneWay" XPath="image/@id"/>
    </MultiBinding>
    </Image.Source>
    </Image>
    </Button>
    ....

    Coté c#

    public class ImageResourceConverter : IMultiValueConverter
    {
    #region IMultiValueConverter Members

    public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
    object result = null;
    String key = values[1] as String;

    if (key != null)
    {
    System.Diagnostics.Debug.Write("key");
    result = ((FrameworkElement)values[0]).TryFindResource(key);
    }

    return result;
    }

    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
    {
    throw new NotSupportedException();
    }

    #endregion
    }

    A noter, je suis passé par un MultiValueConverter, car il me faut la resource en cours et non celle de l'application qui l'execute (comme dans le cas return Application.Current.FindResource(key);

    ), sinon on consulte les resource de Visual Studio, ou d'Expression blend, mais pas les notres.

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 07/10/2011, 11h14
  2. Binding entre deux UserControl
    Par mehdi_ouni dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 11/03/2008, 16h10
  3. Réponses: 2
    Dernier message: 12/02/2008, 09h23
  4. [WPF] Problème de binding entre une SortedList et une ListBox
    Par JuTs dans le forum Général Dotnet
    Réponses: 4
    Dernier message: 10/12/2007, 13h20
  5. binding entre combobox et datagridview
    Par Mathieu.Nanoux dans le forum Windows Forms
    Réponses: 8
    Dernier message: 08/03/2007, 00h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo