WPF使用绑定将网格行设置为动态XAML对象

时间:2011-02-26 02:57:50

标签: wpf data-binding mvvm navigation

我希望将Grid的行(不是DataGrid)的内容绑定到给定的DataContext属性。换句话说,我希望出现的UserControl,比如说...我的网格的第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>

1 个答案:

答案 0 :(得分:0)

我不确定我是否完全理解你的问题,但data template selector可能就是你想要的。在您的情况下,返回的模板将根据当前DataContext进行更改,模板将包含repspective UserControl