Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.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
Wpf ItemsControl不创建ContentPresenter_Wpf_C# 4.0_Mvvm - Fatal编程技术网

Wpf ItemsControl不创建ContentPresenter

Wpf ItemsControl不创建ContentPresenter,wpf,c#-4.0,mvvm,Wpf,C# 4.0,Mvvm,为什么“我的项目”控件不为每个项目创建ContentPresenter?我猜这就是为什么我的项目不显示的原因(当我使用实时视觉树进行检查时,它们被设置为可见并且位于正确的位置)。我基本上是在重用上面在另一个ItemsControl中运行的代码,在搜索Google/Stackoverflow时,我没有找到任何关于这个问题的东西。我可以包含视图模型代码,但我不认为这是相关的,因为我在Live Property Explorer中看到了相应的值,并且可以看到每个WellContainer都位于相应的网

为什么“我的项目”控件不为每个项目创建ContentPresenter?我猜这就是为什么我的项目不显示的原因(当我使用实时视觉树进行检查时,它们被设置为可见并且位于正确的位置)。我基本上是在重用上面在另一个ItemsControl中运行的代码,在搜索Google/Stackoverflow时,我没有找到任何关于这个问题的东西。我可以包含视图模型代码,但我不认为这是相关的,因为我在Live Property Explorer中看到了相应的值,并且可以看到每个WellContainer都位于相应的网格单元中

XAML:


实时目视树木检查:


项目控件设计用于仅在必要时,即当项目不符合其自身容器的条件时,将项目包装在容器中。从您的评论中,我们发现
WellContainer
源自
Control
,因此有资格成为自己的容器1,并且没有包装在
ContentPresenter
中。不幸的是,无法直接控制此行为,但您可以将
ItemsControl
子类化,并重写该方法以修改默认行为



1正如我们在
ItemsControl
中所看到的,对于
UIElement
类型的项目来说,有资格成为自己的容器就足够了。

在哪里定义了
WellContainer
?您是否明确定义了一个
ContentPresenter
?我的视图模型有一个
ObservableCollection
WellContainer
s,并且
WellContainer
只是同一项目中继承自
控件的一个类。不,我没有明确定义
ContentPresenter
只是定义
DataTemplate
,因为这是我在其他两个案例中所做的,这两个案例似乎都在附近工作。如果你的内容在那里,并且像你说的那样在正确的位置,检查
Z-Index
,确保它不只是隐藏在有问题的网格上的某个
ZIndex
后面,0与工作的两个网格相同,不应该有任何其他内容<代码>不透明度
为1,除网格从不显示/渲染外,所有属性看起来都很棒:(注意,在视图模型中有一组控件是个坏主意。您不能同时在多个ItemsControl中显示它们,因为一个UI元素只能有一个父元素,即不是多个父元素的子元素。好的,谢谢。我将尝试提出解决方案并更新问题。
<ItemsControl
    Grid.Row="1"
    Grid.Column="1"
    ItemsSource="{Binding Wells}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <Grid
                x:Name="m_WellGrid"
                Margin="5"
                wpf:GridHelpers.RowCount="{Binding RowCount}"
                wpf:GridHelpers.ColumnCount="{Binding ColumnCount}">
            </Grid>
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemContainerStyle>
        <Style>
            <Setter
                Property="Grid.Row"
                Value="{Binding Path=WellRow}"/>
            <Setter
                Property="Grid.Column"
                Value="{Binding Path=WellCol}"/>
        </Style>
    </ItemsControl.ItemContainerStyle>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <TextBlock
                Text="A"
                Margin="4"/>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>