操作方法:使用 Prism 进行 WPF 设计器绑定预览
Howto: WPF designer binding preview with Prism
如何说服 Visual Studio (2017) 中的 WPF 设计人员在设计时预览 Prism 绑定结果?绑定在运行时运行,无需对 ViewModelLocator 进行任何特殊配置。
有这个主窗口:
<Window x:Class="ViewModelLocator.Views.MainWindow"
...
prism:ViewModelLocator.AutoWireViewModel="True"
Title="{Binding Title}">
<Grid>
<TextBlock Text="{Binding Title}" />
</Grid>
</Window>
还有这个 ViewModel:
namespace ViewModelLocator.ViewModels
{
public class MainWindowViewModel : BindableBase
{
private string _title = "Prism Unity Application";
public string Title
{
get { return _title; }
set { SetProperty(ref _title, value); }
}
}
}
示例复制自:https://github.com/PrismLibrary/Prism-Samples-Wpf/tree/master/08-ViewModelLocator
看来,这个问题与Prim无关(虽然我希望通过prism提供自动解决方案)。
只需像这样设置设计时DataContext。这需要 MainWindowViewModel 实现构建设计时数据的无参数构造函数。
<Window x:Class="ViewModelLocator.Views.MainWindow"
...
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:vm="clr-namespace:ViewModelLocator.ViewModels"
mc:Ignorable="d"
d:DataContext="{d:DesignInstance vm:MainWindowViewModel, IsDesignTimeCreatable=True}"
prism:ViewModelLocator.AutoWireViewModel="True"
Title="{Binding Title}">
<Grid>
<TextBlock Text="{Binding Title}" />
</Grid>
</Window>
如何说服 Visual Studio (2017) 中的 WPF 设计人员在设计时预览 Prism 绑定结果?绑定在运行时运行,无需对 ViewModelLocator 进行任何特殊配置。
有这个主窗口:
<Window x:Class="ViewModelLocator.Views.MainWindow"
...
prism:ViewModelLocator.AutoWireViewModel="True"
Title="{Binding Title}">
<Grid>
<TextBlock Text="{Binding Title}" />
</Grid>
</Window>
还有这个 ViewModel:
namespace ViewModelLocator.ViewModels
{
public class MainWindowViewModel : BindableBase
{
private string _title = "Prism Unity Application";
public string Title
{
get { return _title; }
set { SetProperty(ref _title, value); }
}
}
}
示例复制自:https://github.com/PrismLibrary/Prism-Samples-Wpf/tree/master/08-ViewModelLocator
看来,这个问题与Prim无关(虽然我希望通过prism提供自动解决方案)。
只需像这样设置设计时DataContext。这需要 MainWindowViewModel 实现构建设计时数据的无参数构造函数。
<Window x:Class="ViewModelLocator.Views.MainWindow"
...
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:vm="clr-namespace:ViewModelLocator.ViewModels"
mc:Ignorable="d"
d:DataContext="{d:DesignInstance vm:MainWindowViewModel, IsDesignTimeCreatable=True}"
prism:ViewModelLocator.AutoWireViewModel="True"
Title="{Binding Title}">
<Grid>
<TextBlock Text="{Binding Title}" />
</Grid>
</Window>