我对使用 Prism 的 WPF 和 MVVM 还很陌生,并且遇到了 Prism 导航问题。每次导航到特定视图时,我都想加载一个新视图;但是,如果我输入一些数据或完全处理一些数据,离开并返回,现有数据始终保留在视图中。
我在这里阅读过类似的问题,例如this和this。两者都指向使用INavigationAwareor IRegionMemberLifetime。我试图在我的 ViewModel 中实现这两者;但是,似乎没有人为我解决这个问题。
如果我使用INavigationAware并设置IsNavigationTarget为 false,则视图永远不会加载。如果我使用IRegionMemberLifetime并设置KeepAlive为 false,它仍然会保留我的数据。
我可以发布代码;但是,它很简单,看起来与链接问题中的相同。有人对 Prism 导航有类似的问题吗?
任何帮助表示赞赏。
编辑 - 添加示例代码
为了摆脱我所拥有的其他代码的任何红鲱鱼,我创建了一个新的 Prism 应用程序,其中包含最基本的必需品。导航返回时视图不显示的问题已经解决;但是,视图仍保留输入的值。
这是一些示例代码:
模型:
public class SomeObject
{
    public string ObjectName { get; set; }
}
我用两个 TextBox 控件创建了一个基本视图,1 个绑定,1 个不绑定:
<StackPanel>
    <TextBlock Text="ModuleA" />
    <TextBox Text="{Binding DisplayedSomeObject.ObjectName, UpdateSourceTrigger=PropertyChanged}" />
    <TextBox />
</StackPanel>
视图模型:
[Export]
[PartCreationPolicy(CreationPolicy.NonShared)]
[RegionMemberLifetime(KeepAlive=false)]
public class ModuleAViewModel : BindableBase, IConfirmNavigationRequest, INavigationAware
{
    private SomeObject displayedSomeObject = new SomeObject();
    public SomeObject DisplayedSomeObject
    {
        get { return displayedSomeObject; }
        set
        {
            displayedSomeObject = value;
        }
    }
    [ImportingConstructor]
    public ModuleAViewModel()
    {
    }
    void IConfirmNavigationRequest.ConfirmNavigationRequest(NavigationContext navigationContext, Action<bool> continuationCallback)
    {
        continuationCallback(true);
    }
    bool INavigationAware.IsNavigationTarget(NavigationContext navigationContext)
    {
        return false;
    }
    void INavigationAware.OnNavigatedFrom(NavigationContext navigationContext)
    {
    }
    void INavigationAware.OnNavigatedTo(NavigationContext navigationContext)
    {
        var newSomeObject = new SomeObject();
        this.DisplayedSomeObject = newSomeObject;
    }
}
当我运行它时,绑定和未绑定的控件在导航回时都会保留它们的值。