DataContexts如何流向DataTemplates内的UserControls?

时间:2012-01-09 16:51:20

标签: asp.net wpf mvvm

我用WPF-MVVM实现项目

我有TabControl,其中每个标签代表一个对象Server。 在每个选项卡上,有一个ListBox绑定在Application列表中。 选项卡控件和listbox绑定在ServerViewModel

对象Application的模型化为UserControl,我希望此对象在另一个名为ApplicationViewModel的视图模型上绑定

<TabControl x:Name="_tabControl"
 DataContext="{StaticResource ServerVM}"
 ItemsSource="{Binding UserServerCollection}">
  <TabControl.ContentTemplate>
                <DataTemplate>
                    <ListBox ItemsSource="{Binding ApplicationCollection}">
                            <DataTemplate>
                                <view:ApplicationView />
                            </DataTemplate>
                    </ListBox>
                </DataTemplate>
  </TabControl.ContentTemplate>
</TabControl>

问题是tabcontrol绑定良好,列表框有很多项,但用户控件没有很好的约束。

你能帮帮我吗? 我不知道如何设置userControl datacontext

2 个答案:

答案 0 :(得分:0)

您不一定需要设置DataContext,它会通过继承和ListBox的功能自动设置为模板化项目,可能是来自ApplicationCollection的应用程序视图模型。

如果在DataContext内设置了ApplicationView,则需要在DataTemplate中明确设置DataContext="{Binding}"因为precedence。不确定DataContext是否足够,但您也可以尝试relative source绑定ListBoxItem封闭的{{1}}。

答案 1 :(得分:0)

您需要使ApplicationCollection中的对象属于ApplicationViewModel

类型

您的ApplicationView会从DataContext继承ListBoxItem.DataContext,因此默认DataContext将是ApplicationCollection

中的任何对象