, пожалуйста, помогите мне лучше понять MVVM:
Я связывал списки со списками пользовательских объектов, но затем я столкнулся с некоторыми проблемами, связанными с тем, чтобы выбранные элементы правильно заполняли / связывали в списке множественного выбора.
Решение, которое я нашел, использовало List только для этого списка (или, по крайней мере, это то, что я понял), и тогда класс viewmodel мог иметь свойство IsSelected, что мне помогло.
Мои вопросы таковы: это обычное явление для привязки списка к списку моделей представлений? Это кажется странным, и если это нормально, связывает ли список со списком бизнес-объектов плохую технику MVVM?
Наконец, когда я связываю список со списком моделей представления, как обычно они связаны со списком бизнес-объектов, которые они представляют? сохранить идентификатор в модели представления или ссылку на сам бизнес-объект? Извините за эти вопросы, но я пытаюсь выучить MVVM и делаю это правильно.
вот модель представления, которую я помещаю в список и привязываю к списку:
class ItemViewModel
{
public ItemViewModel(string name)
{
Name = name;
}
public string Name { get; private set; }
bool isSelected;
public bool IsSelected
{
get {
return isSelected;
}
set {
isSelected = value;
}
}
}
вот xaml для списка в представлении
<ListBox Height="401" ItemsSource="{Binding Path=Users}" ItemTemplate="{StaticResource listBoxTemplate}" SelectionMode="Multiple" HorizontalAlignment="Left" Margin="202,29,0,0" Name="lbxAuthorizedUsers" VerticalAlignment="Top" Width="154" >
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="IsSelected" Value="{Binding Mode=TwoWay, Path=IsSelected}"/>
</Style>
</ListBox.ItemContainerStyle>
</ListBox>`
а вот свойство Users в модели представления
public List<ItemViewModel> Users
{
get { return this.users; }
set { this.users = value; }
}