我接下来的初学者教程说我应该在窗口上创建命名空间,
<Window ... xmlns:vm="clr-namespace:MyApp.ViewModels" />
然后像这样设置DataContext,
<Window.DataContext>
<vm:MyViewModel />
</Window.DataContext>
但我不希望DataContext应用于整个窗口。我希望不同的元素使用不同的上下文。
我的DataGrid被定义为,
<DataGrid ... DataContext="{Binding}" ItemsSource="{Binding Path=Queue}"
我想DataContext="{Binding}"
位基本上使用“使用父上下文”,但是我不能在那里将它设置为vm:MyViewModel
?我不确定正确的语法,Visual Studio Properties窗口在这个问题上似乎没用。
答案 0 :(得分:3)
你可以这样做:
<DataGrid ... ItemsSource="{Binding Path=Queue}">
<DataGrid.DataContext>
<mv:MyViewModel />
</DataGrid.DataContext>
</DataGrid>
这实际上与您在Window上设置它的方式相同。
答案 1 :(得分:1)
您可以在控件本身上设置datacontext。对于DataGrid,您可以使用
<DataGrid.DataContext>
<vm:MyViewModel />
</DataGrid.DataContext>