Повторяя контроль n раз и связывая каждый экземпляр - PullRequest
1 голос
/ 02 июля 2011

Я пытаюсь найти менее беспорядочный способ повторения элемента управления n раз, в зависимости от значения свойства связанной модели. Однако первые элементы управления m из n должны отображаться иначе, тогда как m привязано к другому свойству ViewModel. Чтобы проиллюстрировать проблему, представьте, что у меня есть ViewModel, подобный этому ( n означает Display и m Checked здесь):

public class MyViewModel : ViewModelBase {
    public int Display { get; set; }
    public int Checked { get; set; }
    /* ... */
}

Для Display = 5, Checked = 3 представление должно отображать что-то вроде:

(X) (X) (X) ( ) ( )

Каждый (X) и ( ) должны быть экземплярами одного и того же типа дочернего представления. Теперь, когда пользователь нажимает на пятом (последнем) элементе управления, Checked должен быть установлен на 5, и в представлении теперь будет отображаться

(X) (X) (X) (X) (X)

Теперь я могу добиться этого, подключив несколько обработчиков событий и программно добавляя и связывая экземпляры ( ) при каждом изменении Display. Однако мне интересно, есть ли более лаконичный, менее запутанный метод для достижения этой цели.

1 Ответ

2 голосов
/ 02 июля 2011

Думайте о ViewModel как о модели View.Поэтому, если вы хотите показать коллекцию элементов в представлении, вы должны предоставить эту коллекцию в ViewModel.

В этом случае добавьте коллекцию в ViewModel, которая изменяется при изменении значения для Display и Checked.Затем привяжите ItemsControl к коллекции и предоставьте ItemTemplate для элементов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...