问题标签 [contentpresenter]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 更改窗口内容 (WPF)
我创建了一个简单的 WPF 应用程序,它有两个 Windows。用户在第一个窗口上填写一些信息,然后单击“确定”将他们带到第二个窗口。这工作正常,但我试图将两个 Windows 合并到一个窗口中,所以只是内容发生了变化。
我在更改窗口内容时设法找到了这个资源管理,这似乎是我所追求的。但是,我搜索了 ContentPresenter,但找不到太多关于如何使用它的帮助。例如,如果我使用 ContentPresenter,我应该将两个 Windows 中的现有 XAML 元素放在哪里?我猜第一个窗口将进入 ContentPresenter,但第二个窗口需要放在某个地方,以便在需要切换时使用。
任何帮助都会很棒。一个简单的工作示例会更好。
TIA
wpf - 将 ContentPresenter 的宽度限制为其动态内容
我希望能够动态调整内容控件的大小。
这是一个简单的例子:
鉴于此示例,我想强制内容 ContentPresenter 的宽度保持在其生成的子项的最小和最大宽度内(在本例中为 80 - 200)。
显然,通过这样一个简单的例子,我可以改变滑块的范围,但我的实际情况更复杂。我正在尝试将弹出屏幕的大小限制为其生成的内容。我无法在弹出窗口上设置明确的范围,因为我事先不知道内容会是什么样子。内容必须能够自我限制。
不幸的是,孩子的 MaxWidth 和 MinWidth 几乎被忽略了。当父级设置较小时,MinWidth 会导致裁剪。MaxWidth 会导致大量空白空间。看起来我必须在动态更新 Width 值的同一位置设置 MaxWidth 和 MinWidth。
templates - 没有 ItemsPresenter 的 ItemsControl (Silverlight)
我创建了一个继承 ItemsControl 的控件,而我制作的控件没有用于其模板的 ItemsPresenter。相反,我有一个网格。我想做一个这样的列表:
(第 1 项)
(网格分割器)
(第 2 项)
(网格分割器)
(第 3 项)
因为我必须在 Items 之间插入我自己的 GridSplitter,因此我不能使用 ItemsPresenter 并让它为我填充 UI。
我重写了 OnItemsChanged() 方法,因此我可以编写添加/删除 GridSplitter 的逻辑。但是,我仍然需要使用 ItemContainerGenerator 类来为我的 Items 生成 ItemTemplate。
但是当我的控件模板中没有 ItemsPresenter 时,ItemContainerGenerator 似乎不起作用。当我第一次使用它来生成项目时,它会返回一个带有 DataTemplate 的 ContentPresenter。然后我将它插入到我拥有的网格中。但是,屏幕上没有显示任何项目。如果我添加另一个项目,当我插入网格时会抛出一个错误,说该项目已经在可视化树中。这就是我认为没有 ItemsPresenter 的 ItemContainerGenerator 无法工作的原因。
所以我尝试用 ItemsPresenter 替换我的 Grid。这一次,它使用它的下划线逻辑来创建项目,并显示它应该显示的内容。然而,这不是我想要的。
我想使用 ItemContainerGenerator 的原因是我需要从我在 Xaml 中定义的 ItemTemplate 创建 UI 元素。
有没有办法可以使用我的项目控件的 ItemTemplate 生成 UI?
wpf - WPF:通过 ControlTemplate 和 ContentPresenter.Resources 将样式应用于自定义 TabItem 标头的问题
我正在尝试为 TabItem Header 编写自己的控件模板,并且已经使基本布局可以工作,但现在我希望将样式应用于 Header 的内容,例如操纵文本块的大小和字体。
为了测试这一点,我在 tabitem 标题中放置了一个椭圆,并尝试通过样式用金色画笔填充该椭圆。但是,它不起作用。椭圆存在,并且正在应用控制模板,但椭圆的填充不是金色。ContentPresenter.Resources 中的样式被忽略(Resharper 甚至将其变灰以证明这一点)。任何想法我做错了什么?谢谢。
这是代码:
c# - WPF - 无法显示页面内容
我试图在 wpf 窗口内显示一个 wpf 页面(以在隔离环境中重现一些错误),但我无法在窗口内看到该页面。
我的代码很简单:
MainWindow.xaml:
MainWindow.xaml.cs:
Page1.xaml:
知道为什么 MainWindow 显示为空吗?
谢谢,李
wpf - WPF - 如何以编程方式将对象物化为可视内容?
当您将对象分配给 Content 控件时,它将具体化适用于该分配对象的 Visual。有没有一种程序化的方式来实现相同的结果?我想用一个对象在 WPF 中调用一个函数并返回一个 Visual,其中在生成 Visual 时应用相同的逻辑,就好像您将对象提供给 Content 控件实例一样。
例如,如果我有一个 POCO 对象并将其分配给一个 Content 控件,并且恰好定义了一个适当的 DataTemplate,那么它将实现该模板以创建 Visual。我希望我的代码能够获取 POCO 对象并从 WPF 中取回 Visual。
有任何想法吗?
wpf - 带有 TextBlock 的 WPF DataGridCell 模板 - 绑定?
我将'sContentPresenter
中的DataGridCell
's替换为Template
aTextBlock
现在我搜索正确Binding
的内容。
正常的方法是Text="{TemplateBinding Content}
-TextBlock
它不起作用。也Text="{Binding RelativeSource={RelativeSource TemplatedParent},Path=Content, Mode=TwoWay}"
不能正常工作。
还有其他想法吗?
wpf - 如何将不规则区域分配为 ContentPresenter?
如果我们有一个 2 列/1 行的网格,我们可以在这个博客中得到类似的东西。
但是如果我们有 2 列/2 行 [这意味着 - 主广场分为 4 个小广场]...并且只有第 1 行的正方形,第 0 列应该包含选项卡..其他三个小区域应该是内容呈现器,该怎么办?
请帮忙。
wpf - 如何像使用项目控件一样根据数据类型启用自动 DataTemplate 选择?
我们正在编写一个非常专业ItemsControl
的,实际上ContentPresenter
每行有三个 ',每个绑定到不同的对象(想想穷人的网格),而不是更常见的对象,比如ListBox
.
现在,ListBox
如果您没有明确指定 anItemTemplate
或 an ItemTemplateSelector
,则似乎有一些内部选择器纯粹基于数据类型应用模板。但是,我们ContentPresenter
的 's 并没有接他们。我们也尝试将它们切换为ContentControl
's,但这也没有奏效。
现在我知道我可以简单地编写我自己的DataTypeTemplateSelector
来执行此操作,但我想知道该功能是否已经“烘焙”在某个被认为与这么多ItemsControl
's ( ListBox
, TreeView
, ComboBox
' DataGrid
, 等) 一起使用的地方并且根据这个 MSDN文章...
http://msdn.microsoft.com/en-us/library/ms742521.aspx
...它应该默认工作!但同样,它没有。
这是我们的(伪)代码......
所以......有人想试一试,为什么不呢?
xaml - 将 ItemsSource 设置为 ContentPresenter.Content
我试过这个:
并导致堆栈溢出。如何将 ItemsControl 的 ItemsSource 设置为 ContentPresenter 的内容?
编辑:
改为ItemsSource="ContentPresenter.Content"
只是,ItemsSource="{Binding}"
但我仍然遇到堆栈溢出。主 ItemsControl 的 ItemsSource 设置为new List<List<string>> { new List<string> { "1", "2", "3", "4" }, new List<string> { "1", "2", "3" }, new List<string> { "1", "2" }, new List<string> { "1" } };
这是我的一段较大的代码: