【发布时间】:2012-03-05 09:56:41
【问题描述】:
我在下面使用 Datagrid,(使用 MVVM 模式),这里我想要的是当我在组合框中选择某些内容时,ViewModel 中应该会发生某种通知,说明该行的组合框 selectedItem 已更改为此值。现在通知发生在 SelectedEname 的 Set 方法中,该方法位于类 SortedDetails(自定义实体)中,而不是 viewmodel 的一部分。请查看下面的代码,如果我们可以使用 MVVM 模式以任何方式将通知发送到 videmodel,请告诉我。
<c1:C1DataGrid x:Name="datagrid1" ItemsSource="{Binding Path=SortedDetailsList,Mode=TwoWay}" AutoGenerateColumns="False">
<c1:C1DataGrid.Columns>
<c1:DataGridTextColumn Header="Name" Binding="{Binding Name, Mode=TwoWay}"/>
<c1:DataGridTemplateColumn Header="ENGAGEMENT">
<c1:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox x:Name="cmbEngagement" ItemsSource="{Binding EDetails, Mode=TwoWay}" DisplayMemberPath="EName" SelectedItem="{Binding SelectedEName,Mode=TwoWay}">
</ComboBox>
</DataTemplate>
</c1:DataGridTemplateColumn.CellTemplate>
</c1:DataGridTemplateColumn>
</c1:C1DataGrid.Columns>
</c1:C1DataGrid>
SortedDetailsList 是 SortedDetails 实体的列表,如下所示:-
public class SortedDetails
{
Private string name;
Private ObservableCollection<details> eDetails;
Private details selectedEname;
public string Name
{
get { return name; }
set { name = value; }
}
public ObservableCollection<details> EDetails
{
get { return eDetails; }
set { eDetails = value; }
}
public details SelectedEname
{
get { return selectedEname; }
set { selectedEname = value; }
}
}
public class Details
{
Private string eName;
Private int eId;
public string EName
{
get { return eName; }
set { eName = value; }
}
public int EId
{
get { return eId; }
set { eId = value; }
}
}
【问题讨论】:
标签: silverlight mvvm silverlight-4.0