问题标签 [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 投票
7 回答
4025 浏览

wpf - WPF 边框 DesiredHeight

以下Microsoft 示例代码包含以下内容:

但是,在运行时,此代码会生成以下数据绑定错误:

尽管出现此错误,但代码仍可以正常工作。我查看了文档,DesiredHeight似乎不是Border. 谁能解释DesiredHeight来自哪里?另外,有没有办法解决/抑制这个错误,所以我的程序输出是干净的?

0 投票
3 回答
2634 浏览

wpf - WPF:按钮 ControlTemplate + 空格键 = 异常?

我已经在 Expression Blend 中为一个按钮拼凑了一个模板,它工作正常 - 直到我切换到它并按下空格键。我收到以下错误:

InvalidOperationException '[Unknown]' 属性未指向路径 '(0).(1).[0].(2)' 中的 DependencyObject。

代码如下:

似乎 MouseOverStoryboard 或 UnMouseOverStoryboard 被触发(错误中提到的路径似乎与 TargetProperty 匹配)。我不确定为什么在按下空格键时会触发...有什么建议吗?

编辑:感谢 Ryan Versaw,我尝试了以下方法,现在可以防止空格键单击引发异常:

现在画笔类型保持一致(LinearGradientBrush),并且始终有第 0 个 GradientStop 可用。

我仍然对另一件事感到好奇 -考虑到这种感觉就像一个 hack(例如:添加/动画第三个渐变停止,然后在 IsPressed 时需要添加第三个 GradientStop,那么最好的方法是什么? ==真)。

感谢您的建议!希望这对其他人也有帮助。

0 投票
1 回答
161 浏览

wpf - 我必须建立一个 ControlTemplate 吗?还是有替代方案?

我有一个TreeView并且想要显示嵌套的数据(不是分层的)。第一级数据被称为TaskViewModel,第二级数据是ArtifactViewModel。我想要ArtifactViewModela 内的水平线,GroupBox它代表TaskViewModel. 我尝试了不同的方法,这是我的最后一个:

这看起来很像我想要的,除了ArtifactViewModels 是垂直显示的。如果我点击ArtifactViewModeltvTasks.SelectedItem 不会改变,因为ListView处理这个事件。我知道这种方法不是最聪明的,但这只是一种尝试。
我看了这篇文章,但我不知道如何处理我想放入的不同对象TreeView。那么......我如何构建这样的用户界面?

0 投票
1 回答
313 浏览

wpf - WPF 创建一个数据绑定的 ControlTemplate

我有一个绑定到对象的控件,一切都很好,但我想把它变成一个绑定到类似类型的不同对象的控件模板。如果可能的话,我想专门在 xaml 中执行此操作。任何概述步骤的好教程?

编辑:有了更多的经验,事实证明我需要的是能够根据控件的属性设置绑定源。IE

该控件存在于 ControlTemplate 中,但如果我将其直接绑定到数据,则它可以正常工作——如果这会产生影响的话。我不知道这是否可能,或者这是否是正确的方法。欢迎任何想法!

编辑:

这也不起作用。

0 投票
1 回答
484 浏览

c# - ReadOnlyCheckBox 控件模板

我一直在尝试创建我的通用 ReadOnlyCheckBox 样式/模板,但我在绑定到数据时遇到了问题。在这里的例子中:

C# WPF 中的只读复选框

您直接绑定到 ControlTemplate 定义中的数据,但这当然不是我真正想要的,因为我希望能够像这样声明新的复选框:

当然,当我这样做然后将项目符号上的事件触发器设置为 IsChecked 的 TemplateBinding 时,我完全拥有我开始的内容!我想我不明白为什么直接在项目符号中设置绑定与设置 IsChecked 然后绑定到它不同,TemplateBinding 不只是引用正在创建的控件的属性中设置的内容的一种方式吗?即使数据没有更新,点击如何触发 UI 更新?是否有 Click I can override 的触发器来停止更新?

我得到了所有 DictionaryResource 的东西工作正常,所以我很高兴,为指针欢呼。

我很好奇的另一件事是是否可以通过在样式中使用 BasedOn 参数来减少我的 Control/Style 模板,那么我只会覆盖我实际需要更改的内容,而不是声明很多我认为的东西无论如何都是标准模板的一部分。我可能会玩这个。

干杯

0 投票
1 回答
18871 浏览

c# - 将自定义依赖属性绑定到自定义 WPF 样式

我在设计继承的 Expander 时遇到了问题。我的意图是在切换按钮和默认扩展器标题中的文本后面有一个进度条。

我有这个 XAML 代码,它为我提供了标题中的进度条。这是一种自定义样式。

这工作正常,但我无法绑定控制进度百分比的自定义依赖项属性。

这是窗口内的代码:

我不确定如何将此依赖属性进度绑定到样式中 ProgressBar 中的进度值。

任何帮助,将不胜感激。

0 投票
3 回答
12494 浏览

wpf - WPF:如何制作“pushlike”复选框?

我想做一个看起来完全像按钮的 CheckBox。我最初的微弱尝试根本不起作用。

ContentPresenter 不起作用(按钮为空),单击按钮时,IsChecked 属性不会切换。另外,当 IsChecked 为真时,我不知道如何使按钮看起来被按下。

0 投票
3 回答
2013 浏览

c# - 将参数传递给模板

假设我定义了一个圆角按钮。

我有可能这个按钮的用户可以指定 CornerRadius?我可以使用模板绑定吗?但是我应该绑定到哪里?(标记?)

0 投票
1 回答
330 浏览

.net - 重新设计只是 wpf 控件的一部分。是否可以?

我想重新设计 WPF 控件的一部分。

(具体来说,我想让 ScrollBar 上的滚动按钮更大)

现在我可以做到这一点没问题。我提取了默认样式。进行了必要的调整并将修改后的样式包含在我的应用程序中。

问题是我必须在替换样式中包含整个控件模板,而我要更改的只是 2 个值。

我只想将列定义上的 MaxWidth 更改为 50。

所以我的问题是:有什么方法可以对模板进行调整,而不必包含其他所有内容?我仍然希望控件模板的所有其他部分都像默认值一样工作。

0 投票
1 回答
6206 浏览

c# - 将自定义依赖属性添加到 XAML 中的控件模板

经过一段时间的休息后,我设法进一步使用了我的只读复选框,现在以相当优雅的形式拥有了我想要的功能。问题是我使用了一些技巧来使它工作,虽然这不是一场灾难,但做得更好会很好。

回顾一下:我想要一个常规外观的复选框,它在单击时不会自检,而是单击事件触发后台工作人员,该工作人员稍后会导致变量被更新。此变量绑定到 checkbox.ischecked,然后使用新值进行更新。

我想根据这里的想法使用一个控制模板:

C# WPF 中的只读复选框

我已经对此进行了修改并删除了我认为不需要的东西(也许是不明智的)并最终得到:

这个复选框的工作原理如上所述,我这样称呼它:

我所做的 hack 是使用“标记”DependencyProperty 将数据绑定携带到控件模板中。这绕过了通常导致复选框自检的任何机制。要恢复为正常的复选框,只需将绑定到 Tag 更改为绑定到 IsChecked 并在 BulletDecorator 内部将 TemplateBinding 设置为 IsChecked 而不是 Tag。

所以我想我的问题是:

  1. 我弄错了棍子的一端吗?有没有一个地方我可以覆盖导致盒子自检的任何机制?也许在 ControlTemplate 触发器中?
  2. 消除我认为只是从默认 CheckBox 引入的任何备用 XAML 是一个好主意,还是应该尝试完全替换所有样式?
  3. 如果我正在做的事情不是太疯狂,我可以在 XAML 中添加一个依赖属性,这样我就不必使用 Tag 属性了吗?
  4. 我还想到,也许我真正想要的是一个看起来像复选框的按钮控件,也许是一个不可见的按钮,顶部带有通常的动画复选框,我将数据绑定到其图形。对该计划的任何想法也将非常受欢迎。

非常感谢

埃德