相关疑难解决方法(0)

如何使用MVVMLight SimpleIoc?

我正在修改我的软件,它有杂乱的Messenger.Default(...)位.

有没有任何备忘单知道MVVMLight SimpleIoc用法(不是一般的IoC描述)?

c# wpf inversion-of-control mvvm-light windows-store-apps

55
推荐指数
1
解决办法
4万
查看次数

从WPF 3.5迁移到4.0会导致错误"无法将页面放入样式"

我正在将我的应用程序从.NET 3.5移动到.NET 4.0,并且我收到以下错误消息:"无法将页面放入样式".我已经为这个应用程序实现了MVVM模式,并使用数据模板告诉应用程序如何渲染我的各种视图模型......例如下面.

<DataTemplate DataType="{x:Type vm:ConfigureAxViewModel}">
    <vw:ConfigureAxPage />
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)

有没有办法解决这个错误?我是否必须进行页面控制?

谢谢,罗伊

wpf mvvm

5
推荐指数
1
解决办法
750
查看次数

MVVM和子Windows的依赖注入

我正在使用MVVM Light,我目前正在使用该软件包附带的SimpleIoC.我对依赖注入有点困惑.我想在视图模型中使用一堆服务,但是大多数窗口都是List-Edit范例,即一个屏幕列出所有类型Person,然后您可以Person通过新屏幕添加或编辑a .

当我在我的代码后面的代码中进行所有代码添加和编辑记录时如下:

视图

private void btnEdit_Click(object sender, RoutedEventArgs e)
{
    _viewModel.Edit();
}

private void btnAdd_Click(object sender, RoutedEventArgs e)
{
    _viewModel.Add();
}
Run Code Online (Sandbox Code Playgroud)

查看模型

public void Add()
{
    var f = new TypeDetails();
    f.Show();
}
public void Edit()
{
   if (SelectedItem == null)
      return;
   var f = new TypeDetails(SelectedItem.Id);
   f.Show();
}
Run Code Online (Sandbox Code Playgroud)

构造函数TypeDetails如下:

public TypeDetails(int id = 0)
{
    InitializeComponent();
    _viewModel = new TypeDetailsViewModel(id);
    DataContext = _viewModel;
}
Run Code Online (Sandbox Code Playgroud)

使用MVVM Light实现此类型功能最好的是什么?我一直在使用ViewModelLocatorList屏幕的类,但是我看不到使用SimpleIoC的方法.到目前为止,我的方法是保持构造函数相同,这工作正常,直到我需要将依赖项注入到TypeDetailsViewModel服务中.使用服务的构造函数TypeDetailsViewModel …

c# wpf mvvm mvvm-light

2
推荐指数
1
解决办法
1568
查看次数

将类声明为静态和在app.xaml文件中创建实例有什么区别?

假设我有两页在WPF即Page1.xamlPage2.xaml.我有一个名为的viewmodel PageViewModel.cs.这两个页面共享相同的viewmodel.

我可以通过两种方法编写代码:

Mehod1:

PageViewModel.cs

public static class PageViewModel
{

}
Run Code Online (Sandbox Code Playgroud)

的Page1.xaml

<Window.........>
    <Window.DataContext>
        <vm:PageViewModel />
    </Window.DataContext>
</Window>
Run Code Online (Sandbox Code Playgroud)

Page2.xaml

<Window.........>
    <Window.DataContext>
        <vm:PageViewModel />
    </Window.DataContext>
</Window>
Run Code Online (Sandbox Code Playgroud)

App.xaml中

Default xaml code.
Run Code Online (Sandbox Code Playgroud)

方法2:

PageViewModel.cs

public class PageViewModel
{

}
Run Code Online (Sandbox Code Playgroud)

的Page1.xaml

<Window DataContext={StaticResource PageViewModel}>
    ..........
    ..........
</Window>
Run Code Online (Sandbox Code Playgroud)

Page2.xaml

<Window DataContext={StaticResource PageViewModel}>
    ..........
    ..........
</Window>
Run Code Online (Sandbox Code Playgroud)

App.xaml中

<vm:PageViewModel x:Key="PageViewModel" />
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释上述两种方法之间的区别吗?

c# wpf xaml

2
推荐指数
2
解决办法
121
查看次数