私のプロジェクト (MVVM パターンを使用した Silverligth) には、2 つのビュー (Customer および CustomerDetails ページ) があります。顧客ページには、既にロードされている選択したプロジェクトを開くためのListView
1 つと 1 つがあります。Button
ListView
ListView
XAML コーディング:(Customer.xaml)
<ListBox ItemsSource="{Binding Projects,Mode=TwoWay}"
SelectedItem="{Binding Project,Mode=TwoWay}" SelectionMode="Single">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding ProjectName,Mode=OneWay}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<TextBlock Name="CustomerName" Text="{Binding Customer.CustomerName}" />
<TextBlock Name="ProjectName" Text="{Binding Project.ProjectName,Mode=OneWay}"/>
<TextBlock Name="Description" Text="{Binding Project.Description}" />
<HyperlinkButton Content="Open" Click="HyperlinkButton_Click"></HyperlinkButton>
実際に、任意の projectFile Name を選択してからハイパーListView
リンクをクリックすると、Customer View に完全にButton
バインドされる値を取得していることを意味します。TextBlock
しかし、私の要件は、CustomerDetails ページに移動するときに、同じ (バインドされた) 値がバインドされることです。
顧客 (コード ビハインド) ページ:
private void HyperlinkButton_Click(object sender, RoutedEventArgs e)
{
iRegionManager.RegisterViewWithRegion("RootRegion", typeof(View.CustomerDetails));
iRegionManager.RequestNavigate("RootRegion", new Uri("CustomerDetails",
UriKind.Relative));
}
CustomerViewModel.cs
private IEnumerable<Project> projects;
private Project project;
private Customer customer;
SampleDomainContext _context;
public IEnumerable<Project> Projects
{
get { return projects; }
set
{
projects = value;
if (projects != null)
{
Project = projects.FirstOrDefault();
OnPropertyChanged("Project");
}
}
}
public Customer Customer
{
get
{
return customer;
}
set
{
customer = value;
}
}
public Project Project
{
get
{
return project;
}
set
{
project = value;
OnPropertyChanged("Project");
if (project != null)
{
Customer = project.CustomerProjects.FirstOrDefault().Customer;
OnPropertyChanged("Customer");
}
}
}
public CustomerViewModel()
{
int s =Common.ActiveData.Instance.userid;
if(s!=0)
{
UserName = Common.ActiveData.Instance.UserName;
OnPropertyChanged("UserName");
GetProjectList(Common.ActiveData.Instance.userid);
}
}
public void GetProjectList(int userid)
{
_context = new PartsDomainContext();
_context.Load(_context.GetProjectListQuery(ActiveData.Instance.userid), Param =>
{
if (!Param.HasError)
{
Projects = Param.Entities;
OnPropertyChanged("Projects");
}
}, null);
}
私の CustomerDetailsview ページには、以下のコントロールがあります。
テキストブロック テキストブロック テキストブロック
【保存ボタン】 【キャンセルボタン】
ListBox
選択した値を TextBlocksにバインドする必要があります。