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

Windows Presentation Foundation Discussion :

[Resource] Comment réussir un Binding sur un object string vide ?


Sujet :

Windows Presentation Foundation

  1. #1
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Par défaut [Resource] Comment réussir un Binding sur un object string vide ?
    bonjour je cherche comment faire ceci
    <system:String x:Key="T_HEADER_NUMBER" ></system:String>
    sans que ca plante puisqu'il n'existe pas de constructeur vide

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Hum... bonne question

    Tu as essayé en passant par String.Empty ?

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Par défaut
    Salut,

    je n'ai pas d'erreur chez moi

    Peut-être que cette discussion pourra t'aider : http://social.msdn.microsoft.com/For...-c2b02d8b24af/

  4. #4
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Citation Envoyé par binoo Voir le message
    Peut-être que cette discussion pourra t'aider : http://social.msdn.microsoft.com/For...-c2b02d8b24af/
    Je viens de tomber dessus et j'allais lui suggérer

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Par défaut
    je n'ai pas d'erreur chez moi
    tu as l'erreur quand tu fait un tit binding
    Content="{DynamicResource T_HEADER_NUMBER}"

    bon j'ai tente
    <x:Static x:Key="T_HEADER_NUMBER" Member="system:String.Empty" />
    <x:Static x:Key="T_HEADER_NUMBER" Member="System:String.Empty" />
    et ca passe pas

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Par défaut
    etonnament quand je fais ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <Window x:Class="test_empty_string.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:system="clr-namespace:System;assembly=mscorlib"
        Title="Window1" Height="300" Width="300">
        <Window.Resources>
            <x:Static x:Key="T_HEADER_NUMBER" Member="system:String.Empty"/>
        </Window.Resources>
        <Grid>
            <Button Height="37" Margin="80,0,92,85" Name="button1" VerticalAlignment="Bottom" Click="button1_Click">Button</Button>
            <TextBox Text="{StaticResource T_HEADER_NUMBER}" Height="50" Width="100" HorizontalAlignment="Right" VerticalAlignment="Bottom"/>
        </Grid>
    </Window>
    j'ai bien un object string vide dans T_HEADER_NUMBER
    je vais creuser mon binding etait sur un header de listview ca vient sans doute de cela

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Par défaut
    en effet y'a un bleme
    quand je rajoute cette chaine a un dictionnaire de resource ca deconne

    si je met comme dans l'exemple ci dessus ca passe (en dehors de l'editeur waml qui rale a mort)

    mais si je rajoute
    dans app.xaml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <Application x:Class="test_listview_string_a_null.App"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:system="clr-namespace:System;assembly=mscorlib"
        StartupUri="Window1.xaml">
        <Application.Resources>
            <ResourceDictionary>
                <ResourceDictionary.MergedDictionaries>
                    <ResourceDictionary Source="Resources\Lang_En.xaml" />
                </ResourceDictionary.MergedDictionaries>
            </ResourceDictionary>
        </Application.Resources>
    </Application>
    et dans mon dictionnaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <ResourceDictionary
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:system="clr-namespace:System;assembly=mscorlib">
        <x:Static x:Key="T_HEADER_NUMBER" Member="system:String.Empty"/>
        <system:String x:Key="T_HEADER_NUMBER0">alpha</system:String>
    </ResourceDictionary>
    avec le code de test suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    <Window x:Class="test_listview_string_a_null.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:system="clr-namespace:System;assembly=mscorlib"
        Title="Window1" Height="300" Width="300">
        <Window.Resources>
        </Window.Resources>
        <Grid>
            <Button Height="37" Margin="80,0,92,85" Name="button1" VerticalAlignment="Bottom" Click="button1_Click">Button</Button>
            <TextBox  Height="50" Width="100" HorizontalAlignment="Right" VerticalAlignment="Bottom"/>
            <ListView Margin="20,19,18,129" Name="listView1">
                <ListView.View>
                    <GridView AllowsColumnReorder="True" >
                        <GridViewColumn Header="{DynamicResource T_HEADER_NUMBER0}"  Width="Auto" />
                        <GridViewColumn Header="{DynamicResource T_HEADER_NUMBER}" Width="Auto" />
                        <GridViewColumn Header="Beta" Width="Auto" />
                    </GridView>
                </ListView.View>
            </ListView>
        </Grid>
    </Window>
    ca marche toujours dans la listbox mais plus dans le header (enfin il affiche
    system.window.markup.staticextension)

    etonnant non ?

  8. #8
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Par défaut
    Et ça fait pareil si tu utilises un template pour le Header ?

    Un template avec un TextBlock par exemple.

  9. #9
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Par défaut
    bon je tente le truc le plus simple
    donc si je fais ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <GridViewColumn  Width="Auto">
                            <GridViewColumn.Header>
                                <TextBlock Text="{DynamicResource T_HEADER_NUMBER}"  />
                            </GridViewColumn.Header>
                        </GridViewColumn>
    ca me donne une erreur

    d'ailleurs ce qui est amusant c'est que sur la fenetre de vs ca marche, et ca deconne en execution

    avec ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <DataTemplate x:Key="HeaderTemplate">
                <TextBox Text="{DynamicResource T_HEADER_NUMBER}"  />
            </DataTemplate>
     
    et
                        <GridViewColumn  Width="Auto" HeaderTemplate="{StaticResource HeaderTemplate}">
    j'ai la meme erreur

    evidement je pourrais coller un converter, mais franchement je trouve pas ca super propre !!!

  10. #10
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    J'ai pas testé mais pkoi tu fais pas ca tout simplement ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <GridViewColumn  Width="Auto">
                            <GridViewColumn.Header>
                                <TextBlock Text=" "  />
                            </GridViewColumn.Header>
                        </GridViewColumn>

  11. #11
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Par défaut
    j'utilise des dictionnaire de resource pour gerrer mes traductions
    donc si je veux utiliser le meme binding pour l'ensemble des textes de mon application j'aimerais trouver une soltuion simple pour pouvoir utiliser
    Text="{DynamicResource T_HEADER_NUMBER}"

    deja mettre un converter ca me branche a peine
    maintenant je pourrais coller un . dans le
    <system:String x:Key="T_HEADER_NUMBER">.</system:String>
    mais ca fait pas super propre

    je pourrais aussi faire mon type du style
    EmptyString qui renvoit dans le ToString un ""
    avec
    <local:EmptyString x:Key="T_HEADER_NUMBER" />
    mais franchement je trouve ca moins sexy

    mais bon je suis peut etre trop radical

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/10/2014, 08h28
  2. Réponses: 1
    Dernier message: 07/03/2013, 13h29
  3. Comment faire un Binding sur le SelectedItem d'un DataGridComboBoxColumn ?
    Par Cyrilange dans le forum Windows Presentation Foundation
    Réponses: 0
    Dernier message: 29/11/2012, 14h26
  4. Réponses: 1
    Dernier message: 01/12/2010, 11h34
  5. Comment ajouter un Listener sur uun object quelconque?
    Par LDPDC dans le forum Général Java
    Réponses: 7
    Dernier message: 27/04/2009, 17h51

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