2014-01-16 2 views
1

Возможно ли создание свойств MVVM с использованием цикла while/while? Где я должен поместить петлю? В конструкторе или какой-либо другой метод работает? Я бы использовал другой параметр свойства или конструктора в качестве счетчика.Возможно ли создание свойств MVVM с использованием цикла while/while?

Я использую WPF 4.0

Можно создавать списки или массивы, содержащие ObservableCollection<string> {get: set;} то есть. string/int свойство наблюдаемой коллекции в списке или массиве.

как

List<ObservableCollection<string> {get;set;} lt= new List<ObservableCollection<string> {get;set;}(); 

Я пытаюсь сделать что-то вроде ниже без создания класса.

public class CustomerListList : List<CustomerList> { } 

public class CustomerList : List<Customer> { } 

public class Customer 
{ 
    public int ID { get; set; } 
    public string SomethingWithText { get; set; } 
} 

Я нашел выше код в ответе «Поэт» ниже вопроса. Creating a List of Lists in C#

+0

Разве это не тот список/массив? – McGarnagle

+0

@McGarnagle Можете ли вы показать, как это сделать? Я попытался использовать цикл for, но не смог заставить его работать. – user2330678

+5

Уверен, но можете ли вы опубликовать свой существующий код? Я не уверен, что даже понимаю, о чем вы спрашиваете. – McGarnagle

ответ

0

Ну, самый общий способ, которым Вы могли бы написать, что в вашей модели представления является использование ObservableCollection<ObservableCollection<object>>. Я указал object, потому что вы хотите либо int s, либо string s в вашей окончательной коллекции.

Итак, создайте исходный список в своем конструкторе и просто заполните его там, где вам это нужно. Уникальным свойством ObservableCollection является то, что он уведомит пользовательский интерфейс, когда что-то изменится.

Единственная проблема, с которой вы столкнетесь, заключается в том, что при изменении внутренних объектов в пользовательском интерфейсе ничего не будет обновляться, поскольку только обновленные уведомления об уведомлениях о коллекциях. Правильный способ действительно решить эту проблему использует следующую структуру:

public class Customer : INotifyPropertyChanged 
{ 
    private int _id; 
    private string _somethingWithText; 

    public int ID 
    { 
     get { return _id;} 
     set 
     { 
      _id = value; 
      OnPropertyChanged(); 
     } 
    } 

    public string SomethingWithText 
    { 
     get { return _somethingWithText; } 
     set 
     { 
      _somethingWithText = value; 
      OnPropertyChanged(); 
     } 
    } 

    public PropertyChangedEventHandler PropertyChanged; 
    protected OnPropertyChanged([CallerMemberName] string propertyName = "") 
    { 
     if (PropertyChanged != null) 
      PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); 
    } 
} 

И вы используете его в другом классе, как это:

public class MainViewModel 
{ 
    public ObservableCollection<ObservableCollection<Customer>> Customers { get; set; } 

    public MainViewModel() 
    { 
     Customers = new ObservableCollection<ObservableCollection<Customer>>(); 
    } 
} 

Всякий раз, когда вы хотите или потребность, просто добавить материал в этой коллекции ,

1

Я не уверен, что вы просите. Если вы имеете в виду, что можно создать список типа ObservableCollection типа строки, то да:

List<ObservableCollection<string>> list; 

Вы можете добавлять элементы в этот список с помощью для цикла? Конечно:

for (var i = 0; i < 99; i++) { 
    list.Add(new ObservableCollection<string> { "1", "2", "hi" }); 
} 
Смежные вопросы