可以将数据绑定与WPF框架的内容属性一起使用吗?

可以将数据绑定与WPF框架的内容属性一起使用吗?,wpf,mvvm,navigation,frame,Wpf,Mvvm,Navigation,Frame,我可以使用数据绑定来设置WPF框架的初始内容,但是对绑定属性(使用INotifyPropertyChange实现)的后续更改似乎不会更改内容 另外,是否有人知道以这种方式直接绑定到Content属性会导致绑定项出现在Frame或NavigationWindow的日志中 一些上下文:我意识到我可能应该使用NavigationService与框架交互,但我正在尝试遵循MVVM模式。似乎将数据绑定到Content属性要简单得多…框架是导航主机,因此使用NavigationService导航到不同的内容

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

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


一些上下文:我意识到我可能应该使用NavigationService与框架交互,但我正在尝试遵循MVVM模式。似乎将数据绑定到Content属性要简单得多…

框架是导航主机,因此使用NavigationService导航到不同的内容更为正确。如果您使用INotifyPropertyChange,我假设您在内容更改时调用相关事件。然后,我还认为使用导航服务并不困难。

WPF社区中的许多人都认为内置的导航框架被破坏了。但是,即使要使用它,绑定Content属性也不是正确的方法。如果希望将MVVM与导航结合使用,则应将其与FrontController模式结合使用,其中ViewModel向控制器发送导航请求,然后控制器会为您解析该请求。这个概念的例子不多,因为(正如我前面提到的)许多开发人员都使用WPF的内置导航


如果您想查看一个非常健壮的WPF导航引擎,它是MVC路由引擎到WPF的一个端口。

您可以对帧使用数据绑定,但需要确保绑定模式设置为双向

XAML:


几天前我遇到了这个问题。我有一个带有框架的主窗口,我将不同的页面加载到框架中(使用
Navigate()
)。页面的数据绑定被破坏,数据没有显示在加载的页面上


若要修复绑定,请创建或将现有的
DataContext
提供给框架内的页面,绑定将再次工作。

出于某种原因,这不会更新框架-我是从窗口包含框架的窗口视图模型中执行此操作的
<Frame Content={Binding Path=MyProperty, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged} />
public class MyViewModel : INotifyPropertyChanging, INotifyPropertyChanged
{
  public Page MyProperty
  {
    get
    {
      return _viewModelPage;
    }

    set
    {
      this.OnPropertyChanging("MyProperty");
      _viewModelPage = value;
      this.OnPropertyChanged("MyProperty");
    }
  }
}