MVVMパターンプロジェクトを使用したSilverlight5には、リストボックスが1つあります。entityframeworkを使用してデータをリストボックスにロードします。最初に、エンティティフレームワークモデルを使用して、すべてのデータが必ずリストボックスに読み込まれます。しかし、新しいデータを追加すると、リストボックスに新しく追加された値が表示されません。しかし、新しく追加された価値はエンティティで利用可能です。何が問題ですか?これを達成するために私がしなければならないこと。
リストボックスxamlコーディング:
<ListBox ItemsSource="{Binding Projects,Mode=TwoWay}" SelectedItem="{Binding Project,Mode=TwoWay}" SelectionMode="Single" >
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<!--<StackPanel Orientation="Horizontal" />-->
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<Border BorderBrush="Gray" Margin="2,2,2,2" BorderThickness="0">
<StackPanel Orientation="Vertical" >
<TextBlock Text="{Binding ProjectName,Mode=TwoWay}"/>
</StackPanel>
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
ビューモデルコード:
private IEnumerable<Project> projects;
private Project project;
private Customer customer;
PartsDomainContext _context;
public IEnumerable<Project> Projects
{
get
{
return projects;
}
set
{
projects= value;
if (projects != null)
{
OnPropertyChanged("Projects");
Project = projects.FirstOrDefault();
OnPropertyChanged("Project");
}
}
}
public Project Project
{
get
{
return project;
}
set
{
project=value;
OnPropertyChanged("Project");
if (project != null)
{
Customer = project.CustomerProjects.FirstOrDefault().Customer;
OnPropertyChanged("Customer");
}
}
}
public ProjectListViewModel()
{
GetProjectList(ActiveData.Instance.userid);
}
public void GetProjectList(int userid)
{
_context = new PartsDomainContext();
OnPropertyChanged("Projects");
_context.Load(_context.GetProjectListQuery(ActiveData.Instance.userid), Param =>
{
if (!Param.HasError)
{
Projects = Param.Entities;
OnPropertyChanged("Projects");
}
}, null);
}
public void GetProjectList(int userid)
{
_context = new PartsDomainContext();
OnPropertyChanged("Projects");
_context.Load(_context.GetProjectListQuery(ActiveData.Instance.userid), Param =>
{
if (!Param.HasError)
{
Projects = Param.Entities;
OnPropertyChanged("Projects");
}
}, null);
}
それを解決するために助けが必要です..!