2016-02-22 2 views
-1

У меня есть приложение wpf. у которого есть UserControl, называемый отчетами и несколькими классами, когда я запускаю команду, я хочу изменить Listbox на usercontrol на этот Список.Список привязок <T> в список

Я попробовал список и список. Мне бы очень хотелось, чтобы иметь возможность иметь список и использовать его. Можете ли вы рассказать мне, где можно узнать, как это сделать, или объяснить, что я должен искать.

private List<WhatDoIMakeThis> _myList; 
    public List<WhatDoIMakeThis> MyList 
    { 
     get { return _myList; } 
     set { OnPropertyChanged(); } 
    } 

    private void RunReport(Report report) 
    { 

     switch (report) 
     { 
      case Report.Category: 
       MyList = GetCategory(); 
       break; 
      case Report.Person: 
       MyList = GetPeople(); 
       break; 
      case Report.Book: 
       MyList = GetBooks(); 
       break; 
      default: 
       throw new ArgumentOutOfRangeException(nameof(report), report, null); 
     } 
    } 


    List<Category> GetCategory() 
    { 
     var myList = new List<Category>() 
     { 
      new Category() {Rank = 1, CategoryName = "Book"}, new Category() {Rank = 2, CategoryName = "Person"} 
     }; 
     return myList; 
    } 

    List<Person> GetPeople() 
    { 
     return new List<Person>() 
     { 
      new Person() {Name = "Jone Doe", Phone = "(317) 123 4567"}, new Person() {Name = "Jane Doe", Phone = "(317) 234 5678"}, new Person() {Name = "Kid Doe", Phone = "(317) 345 7890"}, 
     }; 
    } 

    List<Books> GetBooks() 
    { 
     return new List<Books>() 
     { 
      new Books() {Auther = "John Doe", Company = "This Comapny", Name = "This Book"} 
     }; 
    } 
+0

Проверить некоторые учебники здесь http://www.wpf-tutorial.com/list-controls/listbox-control/ – Kamen

+0

это ISN Вопрос о списках, что я такое, как сделать работу T – JamTay317

+0

Что вы ищете, должен быть интерфейс? https://msdn.microsoft.com/en-us/library/87d83y5b.aspx – Pikoh

ответ

0

XAML:

<Window x:Class="WpfApplication1.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:local="clr-namespace:WpfApplication1"> 
    <Grid> 
     <ListBox Name="lb" ItemsSource="{Binding}"> 
      <ListBox.Resources> 
       <DataTemplate DataType="{x:Type local:Books}"> 
        <StackPanel Orientation="Horizontal"> 
         <TextBlock Text="{Binding Name}" Width="200"/> 
         <TextBlock Text="{Binding Auther}" Width="200"/> 
         <TextBlock Text="{Binding Company}"/> 
        </StackPanel> 
       </DataTemplate> 
       <DataTemplate DataType="{x:Type local:Category}"> 
        <StackPanel Orientation="Horizontal"> 
         <TextBlock Text="{Binding CategoryName}" Width="200"/> 
         <TextBlock Text="{Binding Rank}"/> 
        </StackPanel> 
       </DataTemplate> 
       <DataTemplate DataType="{x:Type local:Person}"> 
        <StackPanel Orientation="Horizontal"> 
         <TextBlock Text="{Binding Name}" Width="200"/> 
         <TextBlock Text="{Binding Phone}"/> 
        </StackPanel> 
       </DataTemplate> 
      </ListBox.Resources> 
     </ListBox> 
    </Grid> 
</Window> 

C#

using System.Collections.Generic; 
using System.Windows; 
using System.Windows.Input; 

namespace WpfApplication1 
{ 
    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow : Window 
    { 
     List<Person> ps = new List<Person>(); 
     List<Category> cs = new List<Category>(); 
     List<Books> bs = new List<Books>(); 

     public MainWindow() 
     { 
      InitializeComponent(); 

      //Bind to ps 
      ps.Add(new Person { Name = "A", Phone = "000" }); 
      lb.DataContext = ps; 

      //Bind to cs 
      cs.Add(new Category { CategoryName = "cat", Rank = 1 }); 
      lb.DataContext = cs; 

      //Bind to bs 
      bs.Add(new Books { Name = "my book", Auther = "xxx", Company = "ABC" }); 
      lb.DataContext = bs; 
     } 
    } 

    public class Person 
    { 
     public string Name { get; set; } 
     public string Phone { get; set; } 
    } 

    public class Books 
    { 
     public string Name { get; set; } 
     public string Auther { get; set; } 
     public string Company { get; set; } 

    } 

    public class Category 
    { 
     public string CategoryName { get; set; } 
     public int Rank { get; set; } 
    } 
} 
Смежные вопросы