【发布时间】:2011-11-23 22:30:30
【问题描述】:
我在 ItemsControl ItemsPanelTemplate 中定义了一个 Grid,其中一个 RowDefinitions 定义了一个 x:Name(因此我可以为行大小设置动画)。
<ItemsControl ItemsSource="{Binding Data, Source={StaticResource model}}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Grid>
<Grid.RowDefinitions>
<RowDefinition x:Name="t" />
<RowDefinition />
</Grid.RowDefinitions>
</Grid>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
这在 3.5 中运行良好,但是当我们最近升级到 4.0 时,一切都崩溃了。我会看到一个定义了行和列但没有子项的 Grid。
如果我在网格上设置 IsItemsHost=true,一切都会开始工作。如果我将 x:Name 添加到 Grid 本身,或者从 RowDefinition 中删除 x:Name,则一切正常。
<ItemsPanelTemplate>
<Grid IsItemsHost="True">
<Grid.RowDefinitions>
<RowDefinition x:Name="t" />
<RowDefinition />
</Grid.RowDefinitions>
</Grid>
</ItemsPanelTemplate>
或
<ItemsPanelTemplate>
<Grid x:Name="g">
<Grid.RowDefinitions>
<RowDefinition x:Name="t" />
<RowDefinition />
</Grid.RowDefinitions>
</Grid>
</ItemsPanelTemplate>
这似乎是一个错误,但我想与社区核实一下,看看人们是否同意,或者我是否忽略了一些东西。我在 Connect 或网络上找不到任何东西,所以谁能解释一下我看到了什么?
【问题讨论】:
-
哇,这是你发现的一个非常奇怪的错误(是的,我 100% 确定这是一个错误 :-) 至少它有一个非常简单的解决方法,就像你自己发布的一样,只需命名
Grid以及你很高兴去 -
你在 MS-connect 上看过/发帖了吗?
-
我还没有在 Connect 上发帖,不过我已经尽我所能搜索了。
-
IsItmemsHost="True"会影响ItemsControl中的项目生成行为,并且应该被视为 anyItemsPanelTemplate中的必须。至于为什么x:Name会影响行为 - 我仍然对此感到困惑......
标签: .net wpf xaml itemscontrol itemspaneltemplate