C#에서 MVVM을 따르고 있으며 목록 상자에보기를 표시하려고합니다.WPF 목록 상자 및 MVVM 바인딩
목록 상자 itemsource (코드에서 바인딩 및 viewmodels 컬렉션을 사용하지 않음)를 설정하고 datatemplate을 xaml에서 내보기로 설정합니다. 내가 겪고있는 문제는 뷰에서 datacontext를 제거하더라도 괜찮 았지만 내 기본 뷰 생성자 값으로 항상로드됩니다. 다음은
내가이 내보기에 대한 XAML입니다 XAML<ListBox Name="lbCatalogues" HorizontalContentAlignment="Stretch">
<ListBox.ItemTemplate>
<DataTemplate>
<view:CatalogueRowView/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
에서 작성하고있는 목록 상자입니다. 나는 목록 상자에서 올바르게로드 뷰를 얻을 수있는 방법
lbCatalogues.ItemsSource = catalogueViewModel.Records;
이
내 질문은 : 나는 DataContext를 제거하면이 내가 목록 상자의 ItemSource을 설정하고 코드입니다
<UserControl.DataContext>
<model:CatalogueModel />
</UserControl.DataContext>
<Grid Name="Container" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="50" />
<ColumnDefinition Width="100" />
<ColumnDefinition Width="100" />
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="40" />
</Grid.ColumnDefinitions>
<!-- Catalogue_ID, UploadedTime, Client_ID, Name, Desc, Filesize -->
<Label Name="lblCatalogueID" Content="{Binding Path=CatalogueID}" Grid.Column="0"/>
<Label Name="lblUploadedTime" Content="{Binding Path=UploadedTime}" Grid.Column="1"/>
<Label Name="lblCatalogueName" Content="{Binding Path=Name}" Grid.Column="2"/>
<Label Name="lblCatalogueDescription" Content="{Binding Path=Description}" Grid.Column="3"/>
<Label Name="lblFilesize" Content="{Binding Path=Filesize}" Grid.Column="4"/>
<Grid/>
작동 그래서 목록 상자의 각 항목에는 해당 목록 상자 Itemsource에 연결된 DataContext가 있습니까?
답장을 보내 주셔서 감사합니다. 나는 usercontrol.datacontext를 제거했다. usercontrol_loaded 메서드에서 datacontext 내에서 정보를 사용하려고했습니다. 난 그냥 datacontext 다시 (timmeh) 그것을 캐스팅했다. 난 그게 이상한 것을 볼 수있는 datacontext 데이터 형식을로드하는 대신에 기본 생성자를로드하는 것입니다 그것은 건설 시간에 주어진 모델을로드하는 것입니다. – Brett
@ user1444261 당신의''는 타입을 설정하지 않습니다. 실제'UserControl.DataContext' 속성을'CatelogueModel'의 새로운 인스턴스로 설정합니다. –
Rachel