2016-06-01 10 views
0

Ich habe derzeit Probleme beim Zugriff auf die ListView innerhalb einer DataTemplate, jede Zeile hat seine eindeutige Liste, zum Beispiel Sam hat bestimmte Dokumente, die Click-Ereignisse benötigt, ich kann nicht nur den Namen des Steuerelements zugreifen.Auffüllen einer Listview in einer Datatemplate

Durch Forschung habe ich Befehl entdeckt und mit dem visuellen Baum Helfer, kann jedoch nicht auf die Liste zugreifen, um Daten mit der itemsource zu binden.

<DataGrid Name="dgUsers"> 
     <DataGrid.Columns> 
      <DataGridTextColumn Header="Client" Binding="{Binding name1}"/> 
      <DataGridTextColumn Header="Land Line" Binding="{Binding landline}"/>   
     </DataGrid.Columns> 
     <DataGrid.RowDetailsTemplate> 
      <DataTemplate x:Name="datatemplate"> 
       <DockPanel Background="GhostWhite"> 
        <Grid> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition Width="200"/> 
          <ColumnDefinition Width="200"/> 
          <ColumnDefinition/> 
         </Grid.ColumnDefinitions> 

         <ListView x:Name="lvPipeline" Margin="10,82,10,156" Grid.Column="2" > 
          <ListView.View> 
           <GridView> 

Antwort

0

In XAML können Sie benannte Kontrollen in einer Vorlage wie das Ihre nur in der Vorlage zugreifen und nicht von außen. Nicht sicher, ob ich den allgemeinen Anwendungskontext den ganzen Weg verstehe, aber ich würde MVVM verwenden und ein Modell und Ansichtsmodell für Objekte wie Sam erstellen und Sams Dokumentliste in das Ansichtsmodell einfügen und es an die Listbox in der Dataplatte binden.

würde Mein Ansatz so etwas wie dieses:

public class UserViewModel 
{ 
    public string Name {get;set} 
    public ObservableCollection<string> Documents {get;set;} 
    public string SelectedDocument {get;set} 

} 



    <DataGrid Name="dgUsers" ItemsSource="{Binding Users}"> 
      <DataGrid.Columns> 
       <DataGridTextColumn Header="Client" Binding="{Binding Name}"/> 
       <!-- <DataGridTextColumn Header="Land Line" Binding="{Binding LandLine}"/> -->  
      </DataGrid.Columns> 
      <DataGrid.RowDetailsTemplate> 
       <DataTemplate x:Name="datatemplate"> 
        <DockPanel Background="GhostWhite"> 
         <Grid> 
          <Grid.ColumnDefinitions> 
           <ColumnDefinition Width="200"/> 
           <ColumnDefinition Width="200"/> 
           <ColumnDefinition/> 
          </Grid.ColumnDefinitions> 

          <ListView ItemsSource="{Binding Documents}" SelectedItem="{Binding SelectedDocument}" Margin="10,82,10,156" Grid.Column="2" > 
           <ListView.View> 
            <GridView> 

Danach können Sie die SelectedDocument Eigenschaft verwenden können und binden Sie es an einem Beispiel Dokumentenbetrachter.

+0

danke für die Antwort, Wie wird die Bindung an die Dokumente für jeden Benutzer eindeutig sein? – Bish25

+0

danke für die Antwort, Wie wird die Bindung an die Dokumente für jeden Benutzer eindeutig sein? – Bish25

+0

Sie müssen die Dokumente an einen Benutzer binden. Sie könnten auch eine doc-Klasse erstellen, um eine eindeutige ID für jedes Dokument (aus der Datenbank) zu erhalten. –