【发布时间】:2011-02-26 02:57:50
【问题描述】:
我希望将 Grid 行(不是 DataGrid)的内容绑定到给定的 DataContext 属性。换句话说,我希望出现在的 UserControl,比如说……我的 Grid 的第 0 行,当 DataContext 属性 XX 从一个 UserControl 更改为另一个 UserControl 时发生变化。知道怎么做吗?
我想要实现的是一个松散耦合的 UI,由带有占位符的 Shell(主窗口)组成,但能够允许从任何占位符更改此类占位符的内容,如何?好吧,将一些占位符控件的命令绑定到 Shell DataContext 的命令(ShellViewModel),即按层次结构,不覆盖 DataContext 属性的任何占位符的所有控件的 DataContext,然后在此类命令的实现中更改 XX。
更具体地说,我希望我的应用程序的导航控件 (UI) 可以轻松更改而不会影响导航的语义,而我的新手在阅读了 MVVM 后唯一想到的就是上述方法。你有更好的主意吗?这是正确的还是太松散的耦合;)
我在第一次回复后添加了这部分:
数据模板不满足要求。为什么?好吧,很简单,使用数据模板,Shell 必须在前面知道将构成应用程序 UI 的 UI 元素的所有可能部分(通常采用 UserControls 形式的视图),这里的想法是避免这种情况。这个想法是有一个带有占位符的 Shell,并且 Shell 通过其 DataContext(Shell 的 ViewModel)将命令公开给将填充此类占位符的任何 UNKNOWN AT FRONT UI 组件。此类命令可以看作是一种用于与导航系统交互的 API/接口。
经过更多研究,我有了一个想法,所以一个答案可以是以下内容:
<ContentControl Grid.Row="0">
<Binding Path="CurrentView"/>
</ContentControl>
【问题讨论】:
标签: wpf data-binding mvvm navigation