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