2010-07-28 3 views
0

Ceci est une application wpf/C# - J'ai une grille où j'ai utilisé des zones de texte et les liaisons de données étaient très bien. J'ai ensuite construit une autre grille en utilisant des blocs de texte. les deux ont bien fonctionné. mais quand j'ai changé les blocs de texte dans la deuxième grille dans les zones de texte, tous sauf un ont cessé d'afficher des données.La modification de textblock en textbox perd les liaisons de données -

J'ai copié le code C# LINQ et le code XAML qui fournissaient les données pour les liaisons, les recompilais, les sauvegardais dans NotePad ++ et fermais VS (8). Après avoir rouvert le projet, j'ai réinséré le code, mais je n'ai toujours pas de données.

Toutes les idées qui pourraient aider seraient grandement appréciées.

est ici le code C#

var vendDetail = from v in dbC.Vendors 
        where v.VendorID == vendorid 
        select new 
        { 
         v.Address1, 
         v.Address2, 
         CSZ = v.City + ", " + v.State + " " + v.Zip, 
         v.Phone, 
         v.Fax, 
         v.Contact, 
         v.Terms, 
         v.eMail 
        }; 

       grVendorData.DataContext = vendDetail; 

Et le code XAML:

        <TextBox x:Name="txtVendorAddr1" 
              Text="{Binding Path= Address1}" 
              Background="AliceBlue" 
              Grid.Row="2" 
              Grid.Column="1"/> 

            <TextBox x:Name="txtVendorAddr2" 
              Text="{Binding Path= Address2}" 
              Grid.Row="3" 
              Grid.Column="1" 
              Background="AliceBlue"/> 
            <Label Content="City" 
             Grid.Row="4" 
             Grid.Column="0"/> 

            <TextBox x:Name="txtVendorCity" 
             Text="{Binding Path= CSZ}" 
              Grid.Row="4" 
             Grid.Column="1"/> 

            <Label Content="Phone" 
             Grid.Row="1" 
             Grid.Column="0"/> 
            <TextBox x:Name="txtVendorPhone" 
              Text="{Binding Path = Phone}" 
              Grid.Row="1" 
              Grid.Column="1"/> 

            <Label Content="Fax" 
             Grid.Column="2" 
             /> 
            <TextBox Text="{Binding Path = Fax}" 
              Grid.Row="0" 
              Grid.Column="3" /> 

            <Label Content="Terms" 
              Grid.Row="2" 
              Grid.Column="2"/> 
            <TextBox Text="{Binding Path = Terms}" 
               Grid.Row="2" 
              Grid.Column="3"/> 

            <Label Content="Notes" 
              Grid.Row="3" 
              Grid.Column="2" /> 
            <TextBox Text="{Binding Path = Notes}" 
               Grid.Row="3" 
               Grid.Column="3" 
               Grid.RowSpan="2" 
              TextWrapping="WrapWithOverflow" /> 

            <Label Content="eMail" 
              Grid.Row="1" 
              Grid.Column="2" /> 
            <TextBox Text="{Binding Path = eMail}" 
               Grid.Row="1" 
               Grid.Column="3"/> 
+0

Lequel fonctionne toujours? – Goblin

+0

Je ne sais pas si cela compte peu je pense que la différence entre TextBlock et TextBox est le mode de liaison par défaut de la boîte est TwoWay alors qu'il est oneWay pour le bloc. Donc, si les propriétés d'une classe anonyme sont en lecture seule, cela pourrait avoir quelque chose à voir avec cela. Puis-je vous demander pourquoi vous ne créez pas simplement une classe pour le fournisseur ou n'utilisez pas la classe d'entités que Linq crée pour vous? –

+0

J'ai corrigé. Le problème était dans l'instruction LINQ. Plutôt que de spécifier un ensemble de champs à utiliser, j'ai demandé tous les champs. C'est-à-dire au lieu d'utiliser "select new {csv liste de champs};" J'ai utilisé "select v" l'équivalent d'un SQL Select * de l'instruction xyz. Étant donné ce contexte de données, il n'y avait aucune différence entre l'utilisation de blocs de texte et de zones de texte. Donc je suppose que cette question est auto-répondu. –

Répondre

0

Vous ne pouvez pas lier à des types anonymes, ce qui est la raison pour laquelle la liaison a travaillé après avoir commencé la sélection le dossier entier.

+0

Ce n'est pas vrai du tout, vous pouvez lier à des types anonymes très bien ... –

+0

Je pensais Silverlight, mon erreur: http://stackoverflow.com/questions/2684954/silverlight-4-data-binding-with- types anonymes – terphi

Questions connexes