Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法绑定itemcontainerstyle中的项属性_C#_Wpf_Xaml_Itemscontrol - Fatal编程技术网

C# 无法绑定itemcontainerstyle中的项属性

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

今天晚上,我用MvvmLight创建了一个.NETWPF应用程序。我试着在我的主窗口上显示几个圆圈

My MainWindow.xaml已绑定到MainViewModel.cs。MainViewModel包含一个带有SpaceObjects的ObservableCollection。我正在尝试使用itemcontrols显示此集合

<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不工作。