- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在让简单的 ContentPresenter
按预期工作时遇到问题。
当我开始一个新的 UWP 项目时,将 MainPage
内容更改为
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<ContentPresenter Content="{Binding TheContent}" />
</Grid>
并将它的代码隐藏设置为
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
this.DataContext = new ViewModel();
}
}
public class ViewModel
{
public string TheContent { get { return "Hello World."; } }
}
我希望 ContentPresenter
只创建一个 TextBlock
并将 Text
属性设置为“Hello World”。至少它在 WPF 中是这样工作的。
相反,没有显示任何内容,并且输出中出现绑定(bind)错误:
Error: BindingExpression path error: 'TheContent' property not found on 'Windows.Foundation.IReference`1'. BindingExpression: Path='TheContent' DataItem='Windows.Foundation.IReference`1'; target element is 'Windows.UI.Xaml.Controls.ContentPresenter' (Name='null'); target property is 'Content' (type 'Object')
在我看来,ContentPresenter
试图用它所在的页面呈现它的内容?当我将 ContentTemplate
显式设置为 TextBlock
时,一切正常,但使用返回 DataTemplate
的 ContentTemplateSelector
基于 TextBlock
,我遇到了和以前一样的错误。
我错过了什么?
最佳答案
如果您不创建模板,那么您应该使用 ContentControl
ContentPresenter
通常用作 ControlTemplate
的一部分 >内容控件
。
Remarks
Typically, you use the
ContentPresenter
directly within theControlTemplate
of aContentControl
to mark where the content to be presented appears.A
ContentPresenter
is often used to apply characteristics to text content, which are set into aContent
property using only a string for the text (or some indirect equivalent such as a Binding or a RESX resource). For this reason the properties of aContentPresenter
are similar to the properties of theTextElement
class. (TheTextElement
class is a base class for several elements that aren't controls but are used to format the text that might appear in a control or layout container.)
备注
当您将 ContentPresenter
放置在 ContentControl
的 ControlTemplate
中时,它会自动显示模板化控件的内容。这意味着,如果您将 ControlTemplate
的 TargetType
设置为 Button,则 ContentPresenter
的 Content 属性将隐式绑定(bind)到使用该 ControlTemplate
的按钮。
要为 ContentPresenter
属性设置绑定(bind),您可能需要考虑使用 ContentSource
属性。 ContentSource
属性指向模板化父级的属性,并自动为关联的模板和模板选择器属性设置别名。
关于c# - ContentPresenter 在 UWP 中如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37533674/
我刚刚开始使用样式和控件模板,并创建了以下样式来将按钮显示为网格中的文本。我想将字体样式嵌入到下划线样式中,但还没有弄清楚。
我有一个 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 将在中间有一个边框,其中包含要显示的消息和一个半透明的背景,使
我是一名优秀的程序员,十分优秀!