我一直在尝试将列表绑定到我的ItemsControl并不断提出绑定问题,所以我来寻求帮助。
到目前为止我的代码是:
...
<ssm:RecentFilesViewModel x:Key="RecentFilesVM" />
...
<ItemsControl ItemsSource="{Binding Source={StaticResource RecentFilesVM}, Path=Files} Margin="0 4 0 0">
<ItemsControl.Template>
<DataTemplate>
<telerik:RadRibbonButton Width="285">
<TextBlock Margin="0 0 0 2" Text="{Binding Path}" />
</telerik:RadRibbonButton>
</DataTemplate>
</ItemsControl.Template>
</ItemsControl>
如果我将datacontext设置为整个窗口,我可以显示列表但是这意味着我的所有其他绑定都不起作用。这是唯一需要此视图模型的对象,因此我想将其设置为此ItemsControl的唯一对象。有人可以帮我搞定吗?它正在慢慢地让我疯狂。
编辑:
我目前有这种方式,因为没有其他对象的直接视图模型。我们试图尽可能地将其保持分离,因此没有窗口datacontext。其他一切都很好。我正在使用PRISM和Telerik。
通过添加绑定源,我的所有命令绑定(连接到另一个项目中的另一个类)都不再起作用。有没有办法可以确保我的绑定源保持特定于我操作的对象?
答案 0 :(得分:0)
在窗口RecentFilesViewModel
的{{1}}内添加ViewModel
的属性。
然后,您可以这样做:
DataContext
编辑:
根据您最近的编辑,您可以尝试将ItemsControl包装在Grid中,并将其DataContext设置为RecentFiles。注意,您不必为RecentFiled创建资源/密钥,只要定义了名称空间,您就可以简单地访问它。
<ItemsControl ItemsSource="{Binding RecentFilesViewModel.Files}" Margin="0 4 0 0">
<ItemsControl.Template>
<DataTemplate>
<telerik:RadRibbonButton Width="285">
<TextBlock Margin="0 0 0 2" Text="{Binding Path}" />
</telerik:RadRibbonButton>
</DataTemplate>
</ItemsControl.Template>
</ItemsControl>