2011-09-09 5 views
1

J'ai le xaml ci-dessous que j'essaye de lier à ma classe. J'ai du mal à faire apparaître les valeurs. Quelqu'un peut-il me signaler dans la direction de ce que je suis manquant. Merci d'avance.Liaison de données Xaml

Dim frm As New EditPart 
    frm.DataContext = New SelectedPart(_CPPartPicker.Selected_Part, "ABC") 
    frm.Show() 

Class SelectedPart 
Property Part_Key As Integer 
Property Part_Id As String 
Property Part_Rev As String 
Property Whse As String 
Property Part_Description As String 
Sub New(Part As SNC.SL.Common.CP_Item.CP_Item_Lookup_Version_1Item_Lookup_Response, Whse As String) 
    Part_Key = Part.ITEM_KEY 
    Part_Id = Part.ITEM_ID 
    Part_Rev = Part.ITEM_RVSN_ID 
    Whse = Whse 
    Part_Description = Part.ITEM_DESC 
End Sub 

End Class

<Grid x:Name="LayoutRoot" Margin="2"> 
    <Grid.RowDefinitions> 
     <RowDefinition /> 
     <RowDefinition Height="Auto" /> 
    </Grid.RowDefinitions> 
    <sdk:Label Content="{Binding Path=Part_Id, StringFormat='Part ID: \{0}'}" /> 
    <sdk:Label Content="{Binding Path=Part_Rev, StringFormat='Part Rev: \{0}'}" /> 
    <sdk:Label Content="{Binding Path=Part_Description, StringFormat='Description: \{0}'}"/> 

     <Button x:Name="CancelButton" Content="Cancel" Width="75" Height="23" HorizontalAlignment="Right" Margin="0,12,0,0" Grid.Row="1" /> 
    <Button x:Name="OKButton" Content="OK" Width="75" Height="23" HorizontalAlignment="Right" Margin="0,12,79,0" Grid.Row="1" /> 
</Grid> 

Dans la fenêtre ouput je reçois le message d'erreur suivant:

Impossible d'obtenir la valeur 'Part_Id' (type 'System.String') de « SNC.CommonStock .SelectedPart '(tapez' SNC.CommonStock.SelectedPart '). BindingExpression: Path = 'Part_Id' DataItem = 'SNC.CommonStock.SelectedPart' (HashCode = 53866394); l'élément cible est 'System.Windows.Controls.Label' (Name = ''); La propriété target est 'Content' (type 'System.Object'). System.MethodAccessException: Tentative par méthode 'System.Windows.CLRPropertyListener.get_Value()' pour accéder à la méthode 'SNC.CommonStock.SelectedPart.get_Part_Id()' a échoué.

+0

fonctionne-t-il sans StringFormat –

+0

pas qu'il ne fonctionne pas avec la suppression StringFormat – Jim

Répondre

2

Les étiquettes sont toutes superposées à l'heure actuelle, s'il n'y a pas de description, alors vous ne verrez aucun contenu. Placez les étiquettes dans un StackPanel.

+0

j'ai donné qu'un essai au début, mais cela ne pas résolu le problème. Je viens de voir cette erreur dans la sortie - Impossible d'obtenir la valeur 'Part_Id' (tapez 'System.String') à partir de 'SNC.CommonStock.SelectedPart' (tapez 'SNC.CommonStock.SelectedPart'). BindingExpression: Path = 'Part_Id' DataItem = 'SNC.CommonStock.SelectedPart' (HashCode = 53866394); l'élément cible est 'System.Windows.Controls.Label' (Name = ''); La propriété target est 'Content' (type 'System.Object'). System.MethodAccessException: Tentative par méthode 'System.Windows.CLRPropertyListener.get_Value()' pour accéder à la méthode 'SNC.CommonStock.SelectedPart.get_Part_Id()' a échoué. – Jim

+1

@Jim: Je ne fais pas VB.NET mais en C# Les classes sont internes (Ami dans le langage VB je pense) et les propriétés sont privées sauf si vous spécifiez le contraire. Pour la liaison au travail, la classe et les propriétés doivent être publiques. Je me demande donc si vous devez ajouter l'accessibilité publique à la classe et aux propriétés. – AnthonyWJones

+0

Ouais c'était ça. J'ai posté ma réponse ci-dessous. On dirait que nous l'avons posté à la même époque :) – Jim

0

je devais faire la classe I était contraignante pour le public