我在C#中關注MVVM,並試圖在列表框中顯示一個視圖。WPF列表框與MVVM綁定
我設置listbox itemsource(在代碼中,而不是在綁定和使用viewmodels集合),然後將數據模板設置爲我在xaml中的視圖。我遇到的問題是我的視圖總是加載其默認的構造函數值,如果我從視圖中刪除datacontext,但它加載正常。
下面是我在XAML
<ListBox Name="lbCatalogues" HorizontalContentAlignment="Stretch">
<ListBox.ItemTemplate>
<DataTemplate>
<view:CatalogueRowView/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
創建這是我的看法的XAML列表框。如果我刪除的DataContext它的工作原理
<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代碼:
lbCatalogues.ItemsSource = catalogueViewModel.Records;
我的問題是如何獲得的視圖列表框中正確加載以便列表框中的每個項目都有一個鏈接到該列表框Itemsource的DataContext?
感謝您的回覆,最終我得到了它的工作。我擺脫了usercontrol.datacontext。我想在usercontrol_loaded方法的datacontext中使用信息。我只需要投入datacontext就可以取回它(timmeh)。我覺得奇怪的是,通過告訴視圖它的datacontext類型,它只加載默認的構造函數,而不是加載在構建時賦予它的模型。 – Brett 2012-07-17 09:04:45
@ user1444261你的''沒有設置類型。它將實際的'UserControl.DataContext'屬性設置爲'CatelogueModel'的新實例。 –
Rachel
2012-07-17 11:59:31