【发布时间】:2010-10-19 10:08:23
【问题描述】:
我正在为我们的应用程序使用 MVVM 结构。我已将视图作为数据模板添加到网格 (Developer Express DXGrid)。
<DataTemplate x:Key="cardTemplate">
<ui:MediaEnquiryParticipantView x:Name="mediaEnquiryParticipantView"/>
</DataTemplate>
现在,我的问题是我希望 View(MediaEnquiryParticipantView) 代表表格的 1 行。
我该如何解决我的问题?
<dxg:GridControl Name="grdParticipants"
Grid.Row="0"
Height="Auto" Width="Auto"
MaxHeight="5000"
VerticalAlignment="Stretch" HorizontalAlignment="Stretch"
AutoPopulateColumns="True"
DataSource="{Binding Path=MediaEnquiryParticipantList,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
MouseDoubleClick="grdParticipants_MouseDoubleClick">
<dxg:GridControl.Resources>
<DataTemplate x:Key="headerTemplateFullName">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Path=Data.caUser.UserName}" />
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="cardTemplate">
<ui:MediaEnquiryParticipantView x:Name="mediaEnquiryParticipantView" MediaEnquiryID="{Binding Path=Data.MediaEnquiryID}"/>
</DataTemplate>
</dxg:GridControl.Resources>
<dxg:GridControl.Columns>
<dxg:GridColumn FieldName="UserName" Width="150" AllowColumnFiltering="False"/>
<dxg:GridColumn FieldName="CanResolve" Width="150" AllowColumnFiltering="False"/>
</dxg:GridControl.Columns>
<dxg:GridControl.View>
<dxg:CardView x:Name="cardView"
CardHeaderTemplate="{DynamicResource headerTemplateFullName}"
CardTemplate="{DynamicResource cardTemplate}">
<dxg:CardView.RowCellMenuCustomizations>
<dxb:BarButtonItemLink BarItemName="btnDelete" />
</dxg:CardView.RowCellMenuCustomizations>
</dxg:CardView>
</dxg:GridControl.View>
</dxg:GridControl>
上面的网格以卡片视图形式显示“MediaEnquiryParticipantView”。 “MediaEnquiryParticipantsView”部分的网格我对每个都有单独的视图模型。
我的 MediaEnquiryParticipantViewModel 代码:
public class MediaEnquiryParticipantViewModel : ViewModelBase
{
#region Fields
private IQueryable<caUser> userList;
#endregion Fields
#region Constructors
public MediaEnquiryParticipantViewModel(SessionContext sessionContext, NavigationItem navigationItem, MediaEnquiryViewModel mediaEnquiryViewModel, Mediator mediator)
: base(mediator)
{
SessionContext = sessionContext;
NavigationItem = navigationItem;
}
#endregion Constructors
#region Properties
public IQueryable<caUser> UserList
{
get
{
if (userList == null)
{
userList = GetUserList();
}
return userList;
}
set
{
userList = value;
OnPropertyChanged("UserList");
}
}
#endregion Properties
#region Methods
private IQueryable<caUser> GetUserList()
{
IQueryable<caUser> list = (from u in ((Chase_Media_Pro_Entity_Model)this.NavigationItem.ObjectContext).caUser
select u);
return list;
}
#endregion Methods
}
userList 用于 MediaEnquiryParticipantView 中的组合框。
【问题讨论】:
-
“现在,我的问题是我希望 View(MediaEnquiryParticipantView) 代表表格的 1 行。”您的视图模型中的表对象是什么以及它如何绑定到 ui?
-
我正在使用实体框架,所以它是一个对象列表:private IQueryable
mediaEnquiryParticipantList -
绑定在网格中:DataSource="{Binding Path=MediaEnquiryParticipantList,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"