2013-06-05 4 views
0

J'ai une classe PC qui contient Image, Label (avec XAML conception) et je veux obtenir une liste des PC en ListBox dans d'autres classes.classe personnalisée avec XAML dans ListBox C# WPF

J'ai essayé, mais j'obtiens l'erreur System.Windows.Markup.XamlParseException:

pc p = new pc(); 
list_pc.Items.Add(p); 
(where list_pc is a ListBox) 

C'est le XAML pour un seul PC:

<Window 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" 
    x:Class="TnCyberCafe.pc" 
    Title="pc" 
    SizeToContent="WidthAndHeight" 
    ShowInTaskbar="False" 
    WindowStartupLocation="CenterScreen" 
    WindowStyle="None" 
    AllowsTransparency="True" 
    Background="Transparent" Width="95" Height="104.982"> 

    <Grid HorizontalAlignment="Left" Margin="0,10,-15,10" Width="110"> 
     <Image x:Name="image" HorizontalAlignment="Left" Height="96" VerticalAlignment="Top" Width="100" Source="Resources/aaa.png" RenderTransformOrigin="0.5,0.26" Margin="0,-16,0,0"/> 
     <Label Content="Label" HorizontalAlignment="Left" Height="25" Margin="20,70,0,-10" VerticalAlignment="Top" Width="45"/> 
    </Grid> 
</Window> 

C'est le XAML pour mon list_pc:

<ListBox x:Name="liste_pc" ScrollViewer.VerticalScrollBarVisibility="Disabled"> 
    <ListBox.ItemsPanel> 
     <ItemsPanelTemplate> 
      <WrapPanel IsItemsHost="True" Orientation="Horizontal"/> 
     </ItemsPanelTemplate> 
    </ListBox.ItemsPanel> 
    List PCs     
</ListBox> 
+1

HUH? Voulez-vous s'il vous plaît modifier votre question pour inclure plus de contexte sur où l'erreur se produit et à quoi ressemble le 'design xaml'? –

+0

Quand j'ai essayé d'ajouter un PC à ma liste, j'obtiens l'erreur – user2456665

+1

Je pense que cela peut être fait avec ObservableCollection mais je ne sais pas comment exactement :) – user2456665

Répondre

0

Votre premier que stion concernant le System.Windows.Markup.XamlParseException:

Comme Garry Vass mentionné quelque chose s'est mal passé, mais ne vous dit pas exactement ce qui s'est passé. Si vous développez dans Visual Studio, cliquez sur Exceptions sous Déboguez l'onglet et activez Exceptions d'exécution du langage commun. Cela vous dirigera vers le code d'erreur.

Pour la deuxième question que vous devriez avoir DataBindings et ListBox ItemTemplate comme ci-dessous

<ListBox x:Name="liste_pc" ItemsSource="{Binding PCList}" ScrollViewer.VerticalScrollBarVisibility="Disabled"> 
    <ListBox.ItemTemplate> 
      <DataTemplate> 
       <StackPanel Orientation="Horizontal"> 
        <Image Source="{Binding PCImageSource}" /> 
        <Label Content="{Binding Path=PCName}" /> 
       </StackPanel> 
      </DataTemplate> 
    </ListBox.ItemTemplate> 

</ListBox> 

où PCList est la collection d'objets observables objet PC classe

+0

oui cela fonctionne mais le design est manquant ici, il suffit de copier les images et les étiquettes en place sans l'ennemi du design XAML chacun ?? comment résoudre cela ?? – user2456665

+0

Pouvez-vous expliquer vos besoins réels et que voulez-vous montrer dans l'interface utilisateur? Suivez-vous mvvm patterm? – Jasti

+0

Dans mon interface utilisateur je veux obtenir tout le design de xaml pour mon PC quand instancier mon PC de classe, avec votre code je reçois tous les objets, je les place à leur place sans le design XAML créé dans la classe PC.xaml – user2456665