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"/>
Lequel fonctionne toujours? – Goblin
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? –
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. –