我正在构建一个基于MVVM-Light的应用程序.我需要创建同一个View的多个实例,每个实例都应绑定到自己的ViewModel.
默认情况下将ViewModelLocatorViewModels实现为单例,因此同一View的不同实例将绑定到同一ViewModel.
我可以在VMLocator中创建ViewModel作为非静态对象(就像返回新VM()...一样简单),但这只会对我有所帮助.事实上,我仍然需要跟踪打开的窗口.然而,每个窗口可能会打开其他几个窗口(不同类型).在这种情况下,我可能需要在父View及其所有子项上执行一些操作.例如,在关闭View P之前,我可能想要关闭它的所有子节点(视图C1,视图C2等).
因此,有没有简单易行的方法来实现这一目标?或者你有什么建议我遵循的最佳做法?
提前感谢您的宝贵帮助.
干杯,
Gianluca.
我正在尝试从Expression Blend中的ViewModel类创建一些示例数据.但Expression Blend会停止并说"对象引用未设置为对象的实例".就个人而言,我不明白这个例外的来源.
有没有人知道为什么会这样?
这是我的UsersListViewModel:
[Export]
public class UserListViewModel : ViewModelBase
{
[ImportingConstructor]
public UserListViewModel(IUserListView view)
: base(view)
{
}
private ObservableCollection<UserItem> _userList;
public ObservableCollection<UserItem> UserList
{
get { return _userList; }
set
{
if (_userList != value)
{
_userList = value;
RaisePropertyChanged("UserList");
}
}
}
private UserItem _selectedUser;
public UserItem SelectedUser
{
get { return _selectedUser; }
set
{
if (_selectedUser != value)
{
_selectedUser = value;
RaisePropertyChanged("SelectedUser");
}
}
}
private string _searchText;
public string SearchText
{
get …Run Code Online (Sandbox Code Playgroud) 我正在开发一个Silverlight应用程序,它广泛使用Prism,MVVM模式和MEF.出于几个原因,我选择遵循View-first方法.
在其中一个视图中有一个DataGrid,该网格的一个列是DataGridTemplateColumn,它只有一个Button.
我想在Button上定义一个Command和一个CommandParameter.Command应该是ViewModel的DelegateCommand.CommandParameter应该是直接来自dataGrid的SelectedItems列表.
我已经尝试了几种方法来执行此操作,但Command或CommandParameter都为null.
它遵循我最初编写的代码:
<sdk:DataGridTemplateColumn>
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Width="15" Height="15" Content=">"
Command="{Binding UpdateSearchParametersCommand}"
CommandParameter="{Binding SelectedItems, ElementName=dataGrid}">
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我最好的方法是什么?
提前谢谢,Gianluca.
我正在将一个网络摄像头集成到WPF应用程序中.当我将其HANDLE传递给DirectShow函数时,我可以在主窗口中看到摄像头.但这不是我想要的.
主窗体有一个Image控件,我想看看输出.但是,为了做到这一点,我需要控件的Handle.
有关如何做到这一点的任何提示?
提前谢谢,Gianluca.