- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我能够在 ItemsControl 中使用 ItemTemplate 以特定格式呈现项目。但是,如果 ItemsControl 中的项目之一恰好是 TextBox,则呈现该 TextBox 而不是 ItemsTemplate 的实例。据我所知,这适用于任何 FrameworkElement。这是 ItemsControl 的预期行为,还是我做错了什么?
一个例子:
<ItemsControl>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid Margin="5">
<Rectangle Fill="Blue" Height="20" Width="20" />
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.Items>
<sys:Object />
<TextBox />
<sys:Object />
<Rectangle Fill="Red" Height="20" Width="20" />
</ItemsControl.Items>
</ItemsControl>
最佳答案
ItemsControl
有 protected 成员 IsItemItsOwnContainerOverride
它从 items 集合中传递一个对象并返回 true
如果该对象可以在没有生成容器的情况下直接添加到项目面板(从而被模板化)。
对于从 UIElement
派生的任何对象,基本实现返回 true .
要获得您期望的行为,您需要从 ItemsControl
继承并覆盖此方法并使其始终返回false。不幸的是,事情还没有结束。 PrepareContainerForItemOverride
的默认实现仍然没有分配 ItemTemplate
如果项目是 UIElement
到容器所以你也需要覆盖这个方法:-
protected override bool IsItemItsOwnContainerOverride(object item)
{
return false;
}
protected override void PrepareContainerForItemOverride(DependencyObject element, object item)
{
base.PrepareContainerForItemOverride(element, item);
((ContentPresenter)element).ContentTemplate = ItemTemplate;
}
关于wpf - 为什么 ItemsControl 不使用我的 ItemTemplate?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3843200/
我有一个带有许多ItemTemplates的ListView。每个ItemTemplate中有一个Repeater,显示每个ItemTemplate中的文件列表(即类别)。目前,所有类别中的所有文件都
我有一个“报告”页面,该页面将根据表格中的事件报告数量显示动态数量的按钮(格式为 ASP:Hyperlinks)。除了我想要的显示,我可以让一切正常工作。我想并排查看我的按钮(左边是“ItemTemp
我有一个 UserControl我用来显示 UIElement 的列表s。该控件由单个 ItemsControl它是 ItemPanelTemplate切换为水平 StackPanel , 它的 It
我在 ListBox 中使用 ComboBox 作为 ItemTemplate。我的 ComboBox 是可编辑的。当用户在组合框中使用鼠标滚轮时,它会更改当前值。我不想要那个。我想让 ListBox
我有服务器控件,例如在另一个 gridview 的模板字段中带有 gridview 的弹出窗口:
我有一个显示 2 个列表的窗口,它们应该使用相同的模板,所以我考虑将模板放入我的窗口中的资源中,如下所示:
我确信这很简单,但我似乎无法弄清楚如何去做。基本上我有一个来自 azure 移动服务数据库的客户列表。到目前为止一切正常,但我想根据数据为列表框中的每个项目设置项目模板。我有 2 个模板,一个用于公司
我有一个用户控件,它为该控件定义了一个 ItemsControl 和一个 ItemTemplate,即,
我正在处理icons.XAML 图像,将它们插入到文本块上方的按钮中。一切看起来都很棒,直到我将鼠标悬停在图像本身上。一个灰色框只出现在图片上: 如何摆脱灰盒? 这是其中一个图标: 这是
我正在创建一个带有绑定(bind)到项目名称的列表框的 WPF 应用程序。作为装饰元素,我想在列表中的每个项目旁边放置一个小图标,类似于 Outlook 在其个人文件夹列表中所做的方式。对于初学者,我
当 PivotItem 声明为: Text 但是我在使用绑定(bind)的时候如何设置Margin:
我有一个使用 MVVM 的 WPF 应用程序。 此代码来 self 的 ResourceDictionary.xaml
我试图显示一个 ComboBox,其 ItemsSource 是控件的集合(它是 PropertyGrid 的一部分,ComboBox 应该显示控件的名称,并且用户应该能够选择其中一个控件)。这是该问
我希望这个 Ellipse 从其对应的 BallViewModel 中获取其坐标,并使用它们来确定其在 Canvas 内的位置。 球列表绑定(bind)List在 mainviewmodel 中,因此
我有一个带有ItemTemplate的以下ListBox
我有一个 ListView与 ItemTemplate .对于我 ItemSource 中的每个项目,我想遍历项目中的一个属性并在我的 ViewCell 中创建一个部分. 所以每一项都是 Downlo
我有一个 ListBox 控件的情况。在项目模板内有一个按钮。当我单击按钮时,我想将所述 ListBox 的所选项目更改为按钮所在的项目。目前,我可以通过单击项目模板中的其他位置来更改所选项目,但如果
我为 ListViewItem 创建了一个模板。 它并没有填满所有的空间。 我的模板如下:
我为 ListViewItem 创建了一个模板。 它并没有填满所有的空间。 我的模板如下:
我有一个 MenuItem 类型的 WPF 控件模板:
我是一名优秀的程序员,十分优秀!