C# 无法绑定itemcontainerstyle中的项属性
今天晚上,我用MvvmLight创建了一个.NETWPF应用程序。我试着在我的主窗口上显示几个圆圈 My MainWindow.xaml已绑定到MainViewModel.cs。MainViewModel包含一个带有SpaceObjects的ObservableCollection。我正在尝试使用itemcontrols显示此集合C# 无法绑定itemcontainerstyle中的项属性,c#,wpf,xaml,itemscontrol,C#,Wpf,Xaml,Itemscontrol,今天晚上,我用MvvmLight创建了一个.NETWPF应用程序。我试着在我的主窗口上显示几个圆圈 My MainWindow.xaml已绑定到MainViewModel.cs。MainViewModel包含一个带有SpaceObjects的ObservableCollection。我正在尝试使用itemcontrols显示此集合 <ItemsControl ItemsSource="{Binding SpaceObjects}"> <ItemsControl.Item
<ItemsControl ItemsSource="{Binding SpaceObjects}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemContainerStyle>
<Style TargetType="ContentPresenter">
<Setter Property="Canvas.Left" Value="{Binding }"></Setter>
<Setter Property="Canvas.Top" Value="{Binding Radius}"></Setter>
</Style>
</ItemsControl.ItemContainerStyle>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Ellipse Width="{Binding Radius}" Height="{Binding Radius}" Fill="Blue" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
在ItemTemplate中,我可以绑定到SpaceObject属性(如Radius)。在ItemContainerStyle中,我只能从上下文中选择:
我想从源中的项目(ItemsCourse SpaceObjects)中进行选择,这样我就可以从圆中绑定X和Y坐标。我做错了什么?
<DataGrid.ItemContainerStyle>
<Style TargetType="ContentPresenter">
<d:Style.DataContext>
<x:Type Type="SpaceObject" />
</d:Style.DataContext>
<Setter Property="Canvas.Left" Value="{Binding }"/>
<Setter Property="Canvas.Top" Value="{Binding Radius}"/>
</Style>
</DataGrid.ItemContainerStyle>
如果X
和Y
是SpaceObject
的公共double
属性,并且SpaceObjects
返回一个IEnumerable
,您可以像这样绑定到这些属性:
<ItemsControl.ItemContainerStyle>
<Style TargetType="ContentPresenter">
<Setter Property="Canvas.Left" Value="{Binding X}"></Setter>
<Setter Property="Canvas.Top" Value="{Binding Y}"></Setter>
</Style>
</ItemsControl.ItemContainerStyle>
X和Y在哪里?MainViewModel还是SpaceObjects?如果SpaceObjects有它们,请尝试写入{Binding SpaceObjects.X}在每个SpaceObject中指定X和Y。SpaceObjects.X不工作。