Tag: 样式

WPF样式/模板inheritance

我正在尝试学习WPF,并试图通过使用样式使默认的.Net控件看起来不同。 使用C#作为我的首选语言,尽管下面的所有代码都是WPF标记。 我今天用新主题设置了gmail(见下图),从而让我自己成为挑战,可以在WPF中完成。 我设法实现的是通过使用带有控件模板和触发器的样式来创建中间按钮Spam 。 右侧和左侧按钮非常相似,但只有2个不同。 它们的左侧或右侧的圆角半径为1,边距为15,而中间的按钮则将它们都设置为0。 问题! Q1。 可以通过某种类型的inheritance来完成,而不是复制整个样式并仅更改这两个属性。 右侧和左侧按钮的位置基于现有样式,但它会进行这两种视觉变化。 我在创建新样式时已尝试过BasedOn属性,但无法编辑所需的属性。 Q2。 样式是在WPF中解决此问题的正确方法。 在WinForms中,您将创建一个自定义控件,该控件具有链接到枚举的可见属性,即您单击按钮,样式选项可能是Left,Middle,Right。 Q3。 最难的问题直到最后。 是否可以制作它,所以如果一个按钮应用了我的风格。 然后当您将其背景颜色设置为蓝色时。 然后按钮保持渐变但不是它们是灰白色的,它们现在是一片蓝色。 即背景线性渐变画笔基于,而不是覆盖已应用于按钮的背景颜色。 或者这些需要定义单独的样式。 我个人看不到没有某种类型的代码可以实现这一点,即在WPF标记中使用单个画笔制作渐变画笔。 即按钮如下方的蓝色按钮和灰色/普通按钮 我的风格 ps如果您发现上面WPF中的任何初学者错误,请随时向我指出。

是否可以在风格中使用转换器?

是否可以在风格中使用转换器? 例如,我正在尝试创建一个样式化的TextBlock其文本根据TextBlock的ActualHeight属性resize。 resize将通过转换器完成。

在WPF中在运行时更改样式

我试图允许用户自定义WPF应用程序中的元素。 我想要实现的是,如果我有一个列表框,指定所有表单元素(TextBox,标签等),用户可以选择一个表单元素,并设置样式属性说Label,前景应该是橙色的,其中至于TextBox前景应为黑色,依此类推。 根据我打算应用的样式,所有TextBox都应该看起来很相似。 我无法找到实现这一目标的方法。 我已经尝试了一个示例,其中可以在运行时上载多个预定义的样式。 所以现在,我想找到一种在运行时更改不同元素的属性的方法。 UPDATE: 我试图从后面的代码创建一个新的样式。 XAML 并在代码后面,即点击按钮我试过这个: Style style = new Style { TargetType = typeof(Label) }; style.Setters.Add(new Setter(Control.ForegroundProperty, Brushes.Black)); Application.Current.Resources[“Style1”] = style; 但它没有得到更新。 谢谢。