ItemsSource와 함께 목록 상자를 사용하는 동안 ObservableCollection에 항목을 추가하는 데 문제가 있습니다. 내 viewmodels 생성자에서 테스트 용 더미 데이터를 추가합니다.MVVM WPF ObservableCollection : ItemsSource 바인딩 추가 항목의 오류
내 뷰 모델 : 지금까지
public class KabaDeviceListViewModel : KabaBase
{
private ObservableCollection<KabaDeviceDetailViewModel> _details;
public ObservableCollection<KabaDeviceDetailViewModel> KabaDevices
{
get { return _details; }
set
{
if (value != _details)
{
_details = value;
OnPropertyChanged("KabaDevices");
}
}
}
public KabaDeviceListViewModel()
{
ObservableCollection<KabaDeviceDetailViewModel> _details = new ObservableCollection<KabaDeviceDetailViewModel>();
KabaDevice kd1 = new KabaDevice("localhost A", "127.0.0.1", true);
KabaDeviceDetailViewModel dvm = new KabaDeviceDetailViewModel(kd1);
_details.Add(dvm);
KabaDevice kd2 = new KabaDevice("localhost B", "127.0.0.1", true);
KabaDeviceDetailViewModel dvm2 = new KabaDeviceDetailViewModel(kd2);
_details.Add(dvm2);
this.KabaDevices = _details;
}
}
너무 좋아하지만, 오류가 목록 상자의 ItemsSource에, 여기 XAML 코드에서 발생합니다. 나는 내가 뭘 잘못하고 있는지 보지 못한다. VS2010과 .NET 4.0을 사용합니다.
<UserControl x:Class="KabaTest.View.KabaDeviceListView"
...
xmlns:myViewModels="clr-namespace:KabaTest.ViewModel"
xmlns:myViews="clr-namespace:KabaTest.View">
<UserControl.DataContext>
<myViewModels:KabaDeviceListViewModel/>
</UserControl.DataContext>
<Grid>
<ListBox Margin="5"
ItemsSource="{Binding Path=KabaDevices, Mode=TwoWay}" >
ScrollViewer.HorizontalScrollBarVisibility="Disabled" >
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel IsItemsHost="True" Orientation="Horizontal" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate DataType="{x:Type myViewModels:KabaDeviceDetailViewModel}" >
<myViews:KabaDeviceDetailView DataContext="{Binding }"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
ItemsSource에서의 InnerException은 다음과 같습니다 { "ItemsSource 사용 액세스에 대신 ItemsControl.ItemsSource와 요소를 수정하면서 작업이 유효하지 않습니다.."}. 당신의 도움을 주셔서 감사합니다!
KabaDevices 속성을 사용하는 대신 목록 상자에서 직접 항목을 추가/제거하려고하는 다른 코드가 있습니까? –