如何为单个元素设置DataContext?

时间:2010-10-19 18:52:45

标签: wpf xaml

我接下来的初学者教程说我应该在窗口上创建命名空间,

<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窗口在这个问题上似乎没用。

2 个答案:

答案 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>