Silverlight 将特定ID传递给MVVM
这是我不明白的。例如,如果我有一个profile.xaml页面,我有一个带有用户实例的ProfileViewModel。如何让具有用户属性的ProfileViewModel加载具有所需id的用户 我的意思是:当我单击另一个页面中的按钮打开该页面时,如何将用户ID传递给profileviewmodel 比如说 Userlist.xaml有一个用户列表。单击一个并加载Profile.Xaml实例,但是如何将用户ID传递到viewmodel?我是否需要profile.xaml中的一些dependencyproperty,然后将其传递下去Silverlight 将特定ID传递给MVVM,silverlight,mvvm,Silverlight,Mvvm,这是我不明白的。例如,如果我有一个profile.xaml页面,我有一个带有用户实例的ProfileViewModel。如何让具有用户属性的ProfileViewModel加载具有所需id的用户 我的意思是:当我单击另一个页面中的按钮打开该页面时,如何将用户ID传递给profileviewmodel 比如说 Userlist.xaml有一个用户列表。单击一个并加载Profile.Xaml实例,但是如何将用户ID传递到viewmodel?我是否需要profile.xaml中的一些dependenc
请告诉我这对您是否有意义:)这里有多个选项 如果在“父”视图模型中工作,则可以使用特定的用户ID构造新的ProfileViewModel,并将其设置为视图直接拾取的属性。这是我在工作中使用的方法
或者,如果您有一个ProfileViewModel(和ProfileView),并且它没有“连接”到您直接选择用户的屏幕/视图,那么最好的选择通常是使用某种形式的消息服务。这是使用的方法。< P>您应该考虑将用户列表中的用户列表绑定到一个PrruleVIEWMWATE实例集合中,然后您可以将特定的PrimeLeVIEW模型提供给PrimeXML. 在本例中,您的Userlist.xaml将包括:
<UserControl Name="userView">
<!-- other stuff -->
<ItemsControl ItemsSource={Binding Users}>
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding UserName}" />
<Button Content="View User Profile"
Command="{Binding ElementName=userView, Path=DataContext.ViewUserProfileCommand}"
CommandParameter="{Binding}" />
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<!-- other stuff -->
</UserControl>
#region Users Property
public const string UsersPropertyName = "Users";
private ObservableCollection<IProfileViewModelViewModel> _users;
public ObservableCollection<IProfileViewModelViewModel> Users
{
get { return _users; }
set
{
if (_users == value)
return;
_users = value;
RaisePropertyChanged(UsersPropertyName);
}
}
#endregion
public RelayCommand<IProfileViewModel> ViewUserProfileCommand
= new RelayCommand<IProfileViewModel>(ViewUserProfileCommandExecute);
private void ViewUserProfileCommandExecute(IUserProfileViewModel userProfileViewModel)
{
// display your profile view here
}
您的UserlistViewModel将包括:
<UserControl Name="userView">
<!-- other stuff -->
<ItemsControl ItemsSource={Binding Users}>
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding UserName}" />
<Button Content="View User Profile"
Command="{Binding ElementName=userView, Path=DataContext.ViewUserProfileCommand}"
CommandParameter="{Binding}" />
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<!-- other stuff -->
</UserControl>
#region Users Property
public const string UsersPropertyName = "Users";
private ObservableCollection<IProfileViewModelViewModel> _users;
public ObservableCollection<IProfileViewModelViewModel> Users
{
get { return _users; }
set
{
if (_users == value)
return;
_users = value;
RaisePropertyChanged(UsersPropertyName);
}
}
#endregion
public RelayCommand<IProfileViewModel> ViewUserProfileCommand
= new RelayCommand<IProfileViewModel>(ViewUserProfileCommandExecute);
private void ViewUserProfileCommandExecute(IUserProfileViewModel userProfileViewModel)
{
// display your profile view here
}
#区域用户属性
public const string UsersPropertyName=“Users”;
私有可观察收集用户;
公共可观测收集用户
{
获取{return\u users;}
设置
{
if(_users==值)
返回;
_用户=价值;
RaisePropertyChanged(UsersPropertyName);
}
}
#端区
公共RelayCommand viewUserProfile命令
=新的RelayCommand(ViewUserProfileCommandExecute);
私有void ViewUserProfileCommandExecute(IUserProfileViewModel userProfileViewModel)
{
//在此处显示您的纵断面图
}
如上所述,将用户概要视图模型传递到其他页面的一种方法是