MainWindow UI
<Window x:Class="PrismSanity.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:prism="http://prismlibrary.com/"
prism:ViewModelLocator.AutoWireViewModel="True"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Grid>
<TextBlock Text="{Binding MyName}"></TextBlock>
</Grid>
</Window>
MainWindowViewModel
public class MainWindowViewModel : BindableBase
{
private string _MyName = "John";
public string MyName
{
get { return _MyName = "John"; }
set { SetProperty(ref _MyName, value); }
}
}
我安装了SNOOP以查看发生了什么,但VM未链接到View。如果我用第二个视图做同样的事情,并使用
<ContectContainer>
<views:ViewA/>
</ContentContainer>
主窗口中的然后我得到ViewA和ViewAViewModel链接正常。 谢谢你的期待。
答案 0 :(得分:2)
Prism仅支持UserControl
类而非Window
类。 AutoWireViewModel
仅与UserControl
班级有关。
我有同样的问题我解决了这个绑定代码背后的上下文 - 部分使用Unity。这样的事情:
public partial class ShellView : Window
{
public ShellView(ShellViewModel viewModel)
{
this.InitializeComponent();
// Set the ViewModel as this View's data context.
this.DataContext = viewModel;
}
当app创建ShellView(它是你的PrismSanity.MainWindow)时,单元注入viewModel(ShellViewModel
)
技术债务很少。