我应该在哪里设置DataContext - 代码隐藏或xaml?

dov*_*luk 11 silverlight wpf datacontext

(老实说,我搜索并阅读了所有似乎相关的"相关问题" - 我希望我没有"错过"来自其他地方的这个问题但是这里......

设置DataContext有两种不同的方式(至少).可以使用XAML,也可以使用后面的代码.

什么是'最佳实践',为什么?

我倾向于赞成在XAML中设置它,因为它允许设计师自己定义集合,但我需要"弹药"为什么它是最佳实践或为什么我疯了,背后的代码是炸弹......

Ste*_*han 5

您可能会考虑的第三种方法是使用定位器服务。我通常有一个类负责创建我的所有 DataContext(在大多数情况下对我来说是 VM),并且我在 App.xaml 资源中创建该类的一个实例。然后,我在每个单独页面的 XAML 中绑定 DataContext。

IE

<Page DataContext="{Binding ViewModel,Source={StaticResource Locator}}" >
Run Code Online (Sandbox Code Playgroud)


jsm*_*ith 2

我认为这取决于您将 DataContext 设置为什么,以及最终的个人喜好。

我个人总是在我的视图后面的代码中这样做,因为我发现它总体上更干净,这就是我学习 MVVM 的方式。另一件需要记住的事情是,有时您可能需要根据您正在使用的内容更改数据上下文。如果是这种情况,那么在后面的代码中比在 XAML 中执行要干净/容易得多。