你可以使用数据绑定与WPF框架的Content属性?

dth*_*her 6 navigation wpf frame mvvm

我可以使用数据绑定来设置WPF框架的初始内容,但是对绑定属性的后续更改(使用INotifyPropertyChange实现)似乎不会更改内容.

另外,有没有人知道以这种方式直接绑定到Content属性是否会导致绑定项出现在Frame或NavigationWindow的日志中?

一些上下文:我意识到我应该使用NavigationService与Frame交互,但我试图遵循MVVM模式.似乎将数据绑定到Content属性会简单得多......

Opp*_*nal 7

您可以对Frame使用数据绑定,但需要确保绑定的Mode设置为TwoWay.

XAML:

<Frame Content={Binding Path=MyProperty, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged} />
Run Code Online (Sandbox Code Playgroud)

查看型号:

public class MyViewModel : INotifyPropertyChanging, INotifyPropertyChanged
{
  public Page MyProperty
  {
    get
    {
      return _viewModelPage;
    }

    set
    {
      this.OnPropertyChanging("MyProperty");
      _viewModelPage = value;
      this.OnPropertyChanged("MyProperty");
    }
  }
}
Run Code Online (Sandbox Code Playgroud)


Mic*_*own 4

WPF 社区中的许多人都认为内置导航框架已被破坏。但是,即使您要使用它,绑定 Content 属性也不是正确的方法。如果您想将 MVVM 与导航结合使用,您应该将其与 FrontController 模式结合起来,其中 ViewModel 将导航请求分派到控制器,然后控制器为您解析该请求。这个概念的示例并不多,因为(正如我之前提到的)许多开发人员转而使用 WPF 的内置导航。

如果您想为 WPF 查看一个非常强大的导航引擎,请查看 nRoute它是 MVC 路由引擎到 WPF 的端口。