Events 如何在另一个项目中使用xaml和viewmodel
我有一个WP7application应用程序,其中包含一个名为page1.xaml的xaml文件和一个viewmodel。xaml文件包含一个带有绑定命令的按钮 我有另一个名为sampleapplication的项目,在该项目中我启动了一个模拟器,并且必须显示另一个项目中的上面的page1.xaml文件 我能够使用以下命令从当前项目中的wp7应用程序加载上述xaml文件 (Application.Current.RootVisual作为PhoneApplicationFrame)导航(新Uri(“/WP7application;component/Views/page1.xaml”,UriKind.Relative)) 但我无法在加载xaml后处理事件。如何在当前项目中使用按钮Events 如何在另一个项目中使用xaml和viewmodel,events,xaml,mvvm,viewmodel,windows-phone,Events,Xaml,Mvvm,Viewmodel,Windows Phone,我有一个WP7application应用程序,其中包含一个名为page1.xaml的xaml文件和一个viewmodel。xaml文件包含一个带有绑定命令的按钮 我有另一个名为sampleapplication的项目,在该项目中我启动了一个模拟器,并且必须显示另一个项目中的上面的page1.xaml文件 我能够使用以下命令从当前项目中的wp7应用程序加载上述xaml文件 (Application.Current.RootVisual作为PhoneApplicationFrame)导航(新Uri
我已在当前示例应用程序中添加了对wp7应用程序视图和视图模型的所有引用您可以很容易地将视图和视图模型放在单独的程序集中,但其中包含视图的程序集(应用程序或库)必须引用视图模型所在的库 但有两件事需要注意:
1.如果视图和视图模型使用不同的程序集,则视图模型必须位于类库中,而不是主应用程序中。
2.确保代码的结构不存在任何循环引用。(随着复杂性的增加,这可能需要遵守规则。)听起来好像视图的DataContext没有设置为视图模型的实例。有几种方法可以做到这一点 最简单的方法是将以下代码放在视图的已加载事件中:
private void PhoneApplicationPage_Loaded(object sender, System.Windows.RoutedEventArgs e)
{
DataContext = new ViewModel();
}
首选方法是在应用程序项目中定义视图模型定位器。创建视图模型的实例
public class ViewModelLocator
{
private readonly ViewModel _viewModel = new ViewModel();
public ViewModel Main
{
get { return _viewModel; }
}
}
在App.XAML中创建视图模型定位器:
<Application xmlns:vm="clr-namespace:groovd.client.phone.ViewModels" >
<Application.Resources>
<ResourceDictionary>
<vm:ViewModelLocator xmlns:vm="clr-namespace:MyApp.ViewModels" x:Key="Locator" />
</ResourceDictionary>
</Application.Resources>
</Application>
然后从页面中的视图模型定位器获取属性:
<phone:PhoneApplicationPage
DataContext="{Binding Main, Source={StaticResource Locator}}">
</phone:PhoneApplicationPage>
输出窗口中是否有任何绑定错误?添加一个简短但完整的示例来说明确切的问题如何?