问题标签 [controltemplate]

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.

0 投票
1 回答
446 浏览

wpf - WPF设计UserControl/DataTemplate问题

我有一个 WPF UserControl 代表一个有很多字段的人。有些人可以是一家公司。在这种情况下,我想将另一个模板与其他字段一起使用。后面的代码是一样的,这就是为什么我希望它作为一个只有 2 个模板的 1 控件。

我想做的是能够在 VS 设计器支持下定义这两个模板,以便我可以轻松更改它们。

问题在于某些元素附加了EventHandlers(单击...),我无法想象在使用 DataTemplate时如何解决该问题。(也许假设气泡事件在其中一个父项上注册 EventHandler ?然后查找原始源名称?)或者我应该使用 2 个UserControls然后以某种方式将它们合并到我的主 UserControl 中?

先感谢您

0 投票
2 回答
22408 浏览

wpf - 在 WPF 中优雅地覆盖 ComboBox 的 ToggleButton 样式

我有一个关于如何优雅地覆盖控件可视树深处的任意元素的问题。我也尝试过用几种不同的方式来解决它,但是每种方式我都遇到了几个问题。通常,当我尝试三种不同的路径并且每一种都失败时,我会下楼,喝杯咖啡,然后问比我更聪明的人。所以我在这里。

规格:

我想扁平化组合框的样式,这样它就不会引起人们的注意。我希望它类似于 Windows.Forms.ComboBox 的 FlatStyle 我希望它在 Windows 7 和 XP 上看起来相同。

主要是,我想改变 ComboBox 的 ToggleButton 的外观。

我可以只使用 Blend 并撕掉控制模板的内容并手动更改它们。这对我来说听起来不是很开胃。

我尝试使用一种样式来覆盖 ToggleButton 的背景,但事实证明,整个 ComboBox 控件实际上是 ToggleButton 的前端。

所以我放弃了,用 Blend 撕掉了它。我发现它实际上是一个名为 ComboBoxTransparentButtonStyle 的样式,其目标类型为 ToggleButton。该样式设置了一个使用 DockPanel 的 ControlTemplate,该 DockPanel 的右侧设置了“Microsoft_Windows_Themes:ClassicBorderDecorator”类型,而正是我们真正想要控制的。(到目前为止你和我在一起吗?)
这是图片:

例子

精氨酸。WPF不是爆炸吗?

所以我提取了样式 ComboBoxTransparentButtonStyle 并将其放到另一个项目的 application.resources 中。问题是我无法将该样式应用于 ComboBox,因为我提取的样式的 targetType 为 ToggleButton,因此 TargetTypes 不匹配。

tl;博士你们会怎么做?

0 投票
1 回答
2450 浏览

c# - WPF:从 DataTemplate 修改 ControlTemplate 属性?

对 WPF 使用 MVVM 方法,我有一个名为SubButton. 它的样式如下:

DataTrigger不起作用。SelectedSubButton类的常规 .Net 属性。我收到编译错误,因为编译器无法确定rectBackground目标的来源。它是 的一部分ControlTemplate,我不知道该怎么说?关于DataContext?

0 投票
4 回答
2540 浏览

wpf - WPF 布局 - 获取一列以填充可用空间

我有一个ListBox在其模板中有一个网格以允许 4 列。一列是ListBox. 我希望该列填充可用的水平空间。

列定义为:

我已经尝试了几种排列方式,除了显式的大小设置外,没有任何东西可以在窗口中修复。然后,当我调整窗口大小时,它不会随之调整大小。

ListBox包裹在 aScrollViewer中以允许垂直滚动(我猜这就是让我感到困惑的原因。)

关于如何让第三列仅填充可用空间而不是更多的任何想法?

0 投票
1 回答
1635 浏览

wpf - WPF: How to have custom button template that uses system's button background by default?

I am creating a style that changes a ControlTemplate of a Button (it actually adds arrow on the right, so that the button looks like dropdown button (which is missing in wpf)).

Inside of template, I put the actual button (because I need the result to still be like button - I could change only ContentTemplate, but I need to display the actual content together with arrow, and putting ContentPresenter inside ContentTemplate yields stack overflow - wpf just expands the template into the presenter and goes on and on), together with arrow.

My problem is that I would like the user to be able to change button's background, so I need to bind Background="{TemplateBinding Background}". With this, the user would have to always provide the background, otherwise it would be null. To prevent this, I understand I need to provide default value for the background, so I added <Setter Property="Background" Value="default Background goes here"/>

The question is, what should be a value of this setter? I assume that wpf's built-in styles are loaded automatically for every application, and I have looked into aero.normalcolor.xaml, where they provide ButtonNormalBackground style, and later use it as default button style <Setter Property="Background" Value="{StaticResource ButtonNormalBackground}"/> (aero.normalcolor.xaml, line 47).

Exactly what I wanted, however, when I use this setter, the static resource is not found. I then changed it to DynamicResource, but in that case, the button's background stays transparent - the ButtonNormalBackground isn't used!

How should I provide system's button look as default value? Thank you!

PS: dtto for BorderBrush, BorderThickness - geez, it seems that I am not allowed the tricks that WPF authors use all the time :/

My style:

0 投票
1 回答
965 浏览

wpf - 在 xaml 中引用基本类型控件模板

我有一个源自 的控件ComboBox,我想使用ComboBox ControlTemplate,并在 xaml 中对其设置一些值,即ItemContainerStyle. 下面的代码不起作用,我打算将基本ComboBox控件模板应用于此的最后一个设置器没有做任何事情。

我想从中派生,ComboBox但我不想包含它的整个控件模板。我什至不想触摸控制模板。我确实想更改ItemContainerStyle,我可以从代码中做到这一点,但如果我不必这样做会更好。

我在这里想要这个的另一个原因是因为想要访问ComboBox的控件模板的内部成员,即TextBoxPopup。通常我会在OnApplyTemplate.

我觉得我走错了路,请赐教老师。

0 投票
0 回答
452 浏览

c# - 带有模板绑定的 CodeBehind 中的 CollectionViewSource

我正在创建一个基于SelectorWPF 的无外观控件,其依赖属性名为ListItems. 当SelectedItems改变时,我会:

在我的ControlTemplate我将它绑定到ListBox这样的:

但我的ListBox.

我也试过:

我在这里想念什么?

0 投票
1 回答
929 浏览

silverlight - SilverLight - 将命令绑定到控件模板中的按钮

我有一个数据网格。在那个数据网格中,我有一堆列标题样式。在这个样式的控件模板里面,有一个按钮。我需要将命令绑定到该按钮。

请注意,标题样式中还有一个 TextBlock,我使用元素到元素绑定进行绑定,因为标题的 dataContext 中没有我的 viewModel。

如果我用同样的想法来绑定按钮命令,它就不起作用了。我错过了什么吗?

如果不清楚,请告诉我,我将发布示例代码。

提前致谢!

0 投票
1 回答
175 浏览

c# - 在运行时编辑 ControlTemplate

能够在运行时更改 BeginDate 和 EndDate 的最佳方法是什么?

0 投票
1 回答
23291 浏览

wpf - 使用控件模板创建图像+文本按钮?

我厌倦了一遍又一遍地创建相同的图像+文本按钮,我想将标记移动到控件模板。这是我的问题:我需要提供模板绑定来将图像和文本添加到模板化按钮,而 Button 控件似乎没有我可以绑定的属性。

到目前为止,我的模板看起来像这样('???' 用于未知模板绑定):

是否可以使用控件模板创建此图像+文本按钮,还是我必须转到用户控件才能做到这一点?如果可以使用控件模板完成,我该如何设置模板绑定?