2017-05-27 6 views
0

Es ist ein wenig komplizierter aussieht, als es tatsächlich sein kann, aber ich hatte das Listview innerhalb Listview das Fenster zu verwenden. Ich habe ein DataTemplate als Ressource mitgeschickt, aber das Problem ist, dass ich in der Ressourcen-Sektion auf nichts zugreifen kann, foreach und gehe und checke, aber ich dachte, ich wüsste nicht wo ich anfangen soll, ich muss den selectedIndex holen von einem ListView (vielleicht mit messagebox, sagen Sie xxx Index geklickt). Ich habe this Beispiel, wie kann ich es tun?Erste das Listview in Listview SelectedIndex Wert

Update:

Meine XAML-Fenster Ressourcen

<Window.Resources> 
    <DataTemplate x:Key="InsideListTemplate"> 
     <StackPanel Orientation="Vertical"> 
      <Grid MinWidth="300" MinHeight="20"> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="50"/> 
        <ColumnDefinition Width="100*"/> 
       </Grid.ColumnDefinitions> 
       <Border Background="{x:Static SystemParameters.WindowGlassBrush}" Grid.ColumnSpan="5" Opacity=".8"/> 

       <!--0--> 
       <Grid Grid.Row="0" Grid.Column="0" MinWidth="50" MaxWidth="70" HorizontalAlignment="Left" Margin="3,0,0,0"> 
        <TextBlock Margin="5,0,0,0" Text="{Binding CodeNumber}" VerticalAlignment="Center" HorizontalAlignment="Center" TextAlignment="Center"/> 
       </Grid> 

       <!--1--> 
       <Grid Grid.Row="0" Grid.Column="3" MinWidth="300" MaxHeight="50" MinHeight="20" HorizontalAlignment="Left" Margin="5,0,0,0"> 
        <Grid> 
         <TextBox Text="{Binding Code}"/> 
        </Grid> 
       </Grid> 
      </Grid> 
     </StackPanel> 
    </DataTemplate> 

    <DataTemplate x:Key="CodeListTemplate"> 
     <StackPanel Orientation="Horizontal"> 
      <Grid Background="{x:Static SystemParameters.WindowGlassBrush}" MinHeight="296" MinWidth="400" MaxHeight="296" MaxWidth="400"> 
       <StackPanel Orientation="Vertical" VerticalAlignment="Center"> 
        <TextBlock Text="{Binding CodeGroupName}" Foreground="White" TextAlignment="Center" HorizontalAlignment="Center" VerticalAlignment="Center"/> 
       </StackPanel> 
      </Grid> 
      <ListView HorizontalAlignment="Stretch" Background="#FFBB9B45" HorizontalContentAlignment="Stretch" MinWidth="100" MinHeight="25" MaxHeight="300" ItemsSource="{Binding CodeList}" ItemTemplate="{StaticResource InsideListTemplate}"/> 
     </StackPanel> 
    </DataTemplate> 
</Window.Resources> 

Hauptlistview

<ListView x:Name="KodListeleri" Visibility="Visible" Grid.Row="1" Background="CadetBlue" Margin="20,20,20,20" Foreground="#FFFBF7F7" BorderBrush="Transparent" ItemTemplate="{StaticResource CodeListTemplate}" VirtualizingStackPanel.IsVirtualizing="False"/> 

Klassen

public sealed class CodeLibrary 
{ 
    public int CodeGroupNumber { get; set; } 
    public string CodeGroupName { get; set; } 
    public List<Codes> CodeList { get; set; } 
} 

public class Codes 
{ 
    public int CodeNumber { get; set; } 
    public string Code { get; set; } 
} 

Zuletzt

List<CodeLibrary> AllCodesList = new List<CodeLibrary>(); 

    private void Window_Loaded(object sender, RoutedEventArgs e) 
    { 
     AllCodesList.Add(new CodeLibrary() 
     { 
      CodeGroupNumber = 1, 
      CodeGroupName = "My Code Group 1", 
      CodeList = new List<Codes> 
      { 
       new Codes {CodeNumber = 1, Code = "Code 1"}, 
       new Codes {CodeNumber = 2, Code = "Code 2"}, 
       new Codes {CodeNumber = 3, Code = "Code 3"}, 
       new Codes {CodeNumber = 4, Code = "Code 4"}, 
       new Codes {CodeNumber = 5, Code = "Code 5"}, 
       new Codes {CodeNumber = 6, Code = "Code 6"}, 
       new Codes {CodeNumber = 7, Code = "Code 7"}, 
       new Codes {CodeNumber = 8, Code = "Code 8"}, 
       new Codes {CodeNumber = 9, Code = "Code 9"}, 
       new Codes {CodeNumber = 10, Code = "Code 10"}, 
       new Codes {CodeNumber = 11, Code = "Code 11"}, 
       new Codes {CodeNumber = 12, Code = "Code 12"}, 
       new Codes {CodeNumber = 13, Code = "Code 13"}, 
       new Codes {CodeNumber = 14, Code = "Code 14"}, 
       new Codes {CodeNumber = 15, Code = "Code 15"}, 
       new Codes {CodeNumber = 16, Code = "Code 16"}, 
       new Codes {CodeNumber = 17, Code = "Code 17"}, 
       new Codes {CodeNumber = 18, Code = "Code 18"}, 
       new Codes {CodeNumber = 19, Code = "Code 19"}, 
       new Codes {CodeNumber = 20, Code = "Code 20"}, 
      } 
     } 
     ); 

     KodListeleri.ItemsSource = AllCodesList; 
    } 

einen Wert hinzufügen, es so aussehen muss: enter image description here

+1

Zeigen Sie uns Ihren Code. Niemand kann vermuten, was in Ihrem Code falsch ist, wenn wir Ihren Code nicht sehen können. –

+0

Ich war Add Link, gleichen Code. Da ist nichts falsch. –

+0

Geben Sie die angeforderten Informationen an. –

Antwort

1

Der schnellste Weg, dies zu tun, ist der Listenansicht ein Selectionereignishandler zu geben:

<ListView 
    SelectionChanged="CodeListView_SelectionChanged" 
    ItemsSource="{Binding CodeList}" 
    ItemTemplate="{StaticResource InsideListTemplate}" 
    ... 

Und hier ist es, was die Handler sieht aus wie in der Fensterklasse:

private void CodeListView_SelectionChanged(object sender, 
    SelectionChangedEventArgs e) 
{ 
    var listView = sender as ListView; 

    var selectedCodes = listView.SelectedItem as Codes; 
    if (selectedCodes != null) 
    { 
     // Do stuff with selectedCodes 
    } 
} 

Aber Sie können es M tun VVM-Stil statt:

public sealed class CodeLibrary 
{ 
    public int CodeGroupNumber { get; set; } 
    public string CodeGroupName { get; set; } 
    public List<Codes> CodeList { get; set; } 

    private Codes _selectedCodes; 
    public Codes SelectedCodes { 
     get { return _selectedCodes; } 
     set { 
      if (value != _selectedCodes) { 
       _selectedCodes = value; 

       // Do other stuff here if you want 
       MessageBox.Info("You selected " + _selectedCodes.Code); 
      } 
     } 
    } 
} 

XAML:

<ListView 
    SelectedItem 
    ItemsSource="{Binding CodeList}" 
    ItemTemplate="{StaticResource InsideListTemplate}" 
    ... 
+1

Danke Herr! Das funktioniert perfekt. –

+0

@ YıldırayEyüpErdoğan Ausgezeichnet! –

+0

Aber wofür ist der MVVM-Stil? –

Verwandte Themen