- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有没有办法避免生成 ContentPresenter
那ItemsControl
包裹我的元素?我的 ItemsControl
绑定(bind)到 VM 属性,我正在使用 DataTemplate
在我的 ItemControl 的资源(没有 x:Key
)中自定义我的集合对象的外观。这一切都很好,但是通过 Snoop 检查显示我所有的集合对象都包含在 ContentPresenter
中s 而不是直接添加到面板中。这个事实给我带来了一些其他问题。有没有办法避免额外的包装?
这是 XAML:
<ItemsControl ItemsSource="{Binding Path=Children}">
<ItemsControl.Resources>
<DataTemplate DataType="{x:Type vm:Ellipse}">
<Ellipse Fill="{Binding Fill}" Stroke="{Binding Stroke}" />
</DataTemplate>
</ItemsControl.Resources>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas Focusable="true" Margin="10" FocusVisualStyle="{x:Null}" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemContainerStyle>
<Style>
<Setter Property="Canvas.Left" Value="{Binding XLoc}" />
<Setter Property="Canvas.Top" Value="{Binding YLoc}" />
<Setter Property="Canvas.ZIndex" Value="{Binding ZOrder}" />
</Style>
</ItemsControl.ItemContainerStyle>
</ItemsControl>
最佳答案
您可以创建一个派生的 ItemsControl 并覆盖它的 GetContainerForItemOverride方法:
public class MyItemsControl : ItemsControl
{
protected override DependencyObject GetContainerForItemOverride()
{
return new Ellipse();
}
}
ItemTemplate
没有了,有一个
ItemContainerStyle
直接针对椭圆:
<local:MyItemsControl ItemsSource="{Binding Items}">
<local:MyItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas/>
</ItemsPanelTemplate>
</local:MyItemsControl.ItemsPanel>
<local:MyItemsControl.ItemContainerStyle>
<Style TargetType="Ellipse">
<Setter Property="Width" Value="100"/>
<Setter Property="Height" Value="100"/>
<Setter Property="Fill" Value="{Binding Fill}"/>
<Setter Property="Stroke" Value="{Binding Stroke}"/>
<Setter Property="Canvas.Left" Value="{Binding XLoc}"/>
<Setter Property="Canvas.Top" Value="{Binding YLoc}"/>
<Setter Property="Panel.ZIndex" Value="{Binding ZOrder}"/>
</Style>
</local:MyItemsControl.ItemContainerStyle>
</local:MyItemsControl>
关于wpf - 在 ItemsControl 中避免 ContentPresenter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31788384/
我刚刚开始使用样式和控件模板,并创建了以下样式来将按钮显示为网格中的文本。我想将字体样式嵌入到下划线样式中,但还没有弄清楚。
我有一个 DataTemplate : ... 我想用它作为 ContentTemplate的 ContentPresenter : 如何使用预定
我正在尝试为我的 ItemsControl 使用单选模式。所以我将 ItemsControl 更改为 ListBox 但是出现异常 "A style intended for type 'Conten
基本上,我不了解这里的真正区别是: TabItem的Microsoft代码使用: 那么,什么时候可以使用Content属性代替(或补充使用)ContentSource? 最佳答案 此属性仅在以下情况
我遇到了 ContentPresenter 根据样式是否位于窗口中而表现异常的问题。资源或资源字典中。具体来说,我将默认 TextBlock 的前景设置为黑色,然后将默认按钮样式中的前景值设置为白色。
我在 ControlTemplate 中有一个 ContentPresenter,试图布局一个 TabItem。我希望标题内 TextBlock 的前景色在选择选项卡时更改颜色。我的模板如下:
我在 Themes\Generic.xaml 下有下面的代码 现在我需要在代码中获取 cPresenter 我该怎么做? 事实上,我尝试将 Silverlight 实现转换为 WPF 代码。我想使用类
我只是在玩一个简单的 ContentPresenter。
我的 View 中有一个 ContentControl,它数据绑定(bind)到我的 View 模型的 CurrentItem 属性。通过 CurrentItem 公开的对象每个都有自己的 DataT
我覆盖了 wpf 扩展器的模板。 header 有 ContentPresenter 我试图为里面的所有 TextBlocks 添加我的样式。 如果我将标题
好的,我在网格单元中有一个 contentpresenter:
我已经覆盖了 ComboBox为了在组合的末尾添加一个额外的按钮 - 我正在使用它来帮助浏览我的应用程序。 它是一个 M-V-VM 应用程序,具有编辑-保存/取消机制,可根据用户是否处于“编辑模式”来
是否可以定义 ContentPresenter 的“呈现行为”?以便将填充应用于其内容? 现在我有一个 ContentPresenter并定义所有 UserControl 的边距可以成为此 Conte
我正在尝试基于数据触发器切换 contentpresenter 的内容。我想在 contentpresenter.content 中显示用户控件,如果我设置了值,否则我需要显示错误消息。但是绑定(bi
我正在使用以下产品:VS 2010、.Net 4、WPF 和 .Net Memory Profiler 版本 4.6.40.0 Pro。它们都在 Win7 64 位上运行。我一直在使用 .Net Me
我有以下 xaml:
我有 2 个 ContentPresenter fixedContentPresenter 和 resizableContentPresenter 并且显然是 Generic.xaml 中的内容。当
我正在使用 ItemsControl 生成基于我的模型的控件列表。查看可视化树时,我注意到每个呈现的控件都包装在一个 ContentPresenter 中。添加的控件是第 3 方控件,旨在显示每个控件
我有一个 ListBox,它绑定(bind)到动态创建的 UserControls 的 ObesvableCollection。 .
例如: 然后,PopUpView 中的 View 将在中间有一个边框,其中包含要显示的消息和一个半透明的背景,使
我是一名优秀的程序员,十分优秀!