问题标签 [implicit-style]

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 投票
2 回答
4897 浏览

xaml - Silverlight 4 - 如何在使用隐式按钮样式聚焦时更改按钮背景颜色?

我在尝试实现应该微不足道的事情时遇到了很大的困难。我正在使用在全局 XAML 资源文件中定义的隐式按钮样式。我只想使用 ColorAnimation将焦点按钮的背景颜色更改为红色。我尝试了许多不同的组合Storyboard.TargetPropertyStoryboard.TargetName但没有任何效果。我怎样才能做到这一点?

提前致谢。

0 投票
1 回答
620 浏览

wpf - Expression Blend、ItemTemplate 和隐式样式

我遇到了 Blend 无法在 DataTemplate 中隐式渲染项目的问题。

我已经设置了一个基本项目来复制该问题。下面是 Xaml + ResourceDictionary 供那些有鹰眼的人查看我做错了什么(如果有的话),如果你真的很热衷于下面的 Zipped 项目的链接。

这是应用程序运行时呈现的内容:

预期产出

这就是 Blend 呈现的:

混合渲染

完整示例项目 (65kb) - WpfApplication2.zip

这个问题当然可以通过显式设置样式来解决,但是在我的主项目中这会让人有点头疼。

我在其他帖子上看到了一些关于 Blend 可能有问题但没有具体内容的评论。

有什么想法/建议吗?

谢谢!

编辑:

我发现如果我给我的样式一个显式键,我可以创建一个基于显式的隐式样式,如下所示:

然后,这使我能够在我的 DataTemplate 中添加另一个隐式样式作为资源:

这将给我在我的主要项目中需要的可混合性,但仍然不能完全回答我原来的问题。

0 投票
1 回答
762 浏览

silverlight - Silverlight - 隐式样式继承问题

如果我有一个ContextMenu(例如)的子类,MyContextMenu并且我在MergedDictionarieswith中定义了一个样式TargetType=ContextMenu,为什么这种样式不适用于 的实例MyContextMenu

它适用于基类的所有实例,但不适用于任何子类。

我可以创建其他样式并使用BasedOn,但这并不干净。似乎没有它应该可以工作。

我已确保我的子类调用基构造函数,并已验证DefaultStyleKey是我的基类的类型。

0 投票
1 回答
448 浏览

wpf - 未设置 DisplayMemberPath 时,如何阻止隐式 TextBox 样式在 ComboBox 中继承?

我有两个ComboBoxes。一个绑定到枚举值列表,而另一个绑定到自定义类对象列表并具有DisplayMemberPath属性集。

对枚举值的ComboBox绑定应用了隐式TextBlock样式,而ComboBox使用该DisplayMemberPath属性的 则没有。

使用Snoop我可以验证两者ComboBoxes都使用完全相同的控件集(a<ContentPresenter>包含 a <TextBlock>)呈现,但是没有集合中的 a 包含TextBlock5而带有set 的控件不包含。ComboBoxDisplayMemberPathMarginDisplayMemberPath

截屏

为什么是这样?我能做些什么来阻止枚举ComboBox继承隐式TextBlock样式?

0 投票
3 回答
1966 浏览

wpf - 为什么在将 Label.Content 绑定到非字符串而不是字符串时应用隐式 TextBlock 样式?

我在看这个问题,发现绑定Label.Content到非字符串值将应用隐式TextBlock样式,但绑定到字符串不会。

这是一些重现问题的示例代码:

绑定值的代码在哪里

最终结果如下所示,Margin隐式 TextBlock 样式的属性仅应用于绑定到非字符串的 Label:

在此处输入图像描述

两个标签都呈现为

当我用Snoop查看 VisualTree 时,我可以看到这两个元素看起来完全相同,除了第二个 TextBlock 应用了隐式样式的 Margin ,而第一个没有。

在此处输入图像描述

我使用 Blend 提取了默认标签模板的副本,但没有看到任何奇怪的地方,当我将模板应用于我的两个标签时,会发生同样的事情。

还应该注意的是,将默认值设置ContentTemplate为 aTextBlock确实会使两个项目在没有隐式样式的情况下呈现,因此它必须与 WPF 尝试将非字符串值呈现为 UI 的一部分有关。

在此处输入图像描述

是什么逻辑导致插入 UI 的非字符串使用隐式 TextBlock 样式绘制,但插入 UI 的字符串不绘制?这发生在哪里?

0 投票
1 回答
1363 浏览

wpf - 隐式样式不适用于自定义控件

在我的 App.xaml 中,我有一些隐式样式

只要这些样式不在我创建的自定义控件中,它们就可以用于控件。

我的控制

我的控件样式和模板

现在我假设 DefaultButtonStyle 的 BasedOn 会从 App 级别得到它。但它没有。应用应用级别样式的唯一方法是通过创建 NavigationControl 类型的样式来覆盖 ButtonStyle。

有没有一种方法可以让隐式风格发挥作用?

0 投票
2 回答
1242 浏览

c# - 具有不同系统主题的 WPF 皮肤

我们的WPF应用程序有几个 UI 皮肤,可以在运行时切换并应用于特定的框架元素及其子元素。皮肤是经过编译的 xaml资源字典,存储在Theming dll 中,皮肤是通过使用自定义SkinManager类和附加的依赖属性 Skin来实现的,这实际上是通过将皮肤的资源字典添加到目标 FrameworkElement.Resources.MergedDictionaries 来更改皮肤。皮肤字典包含具有 TargetType=" SomeType " 和 BasedOn="{StaticResource {x:Type SomeType }}" 的样式,因此将此样式应用于所有框架元素SomeType,基于 WPF 系统主题的隐式样式。这种方法效果很好,但是当我们尝试将主题引入我们的应用程序时遇到了问题

根据我们的定义,主题 是一种自定义皮肤,适用于整个应用程序 + 特定系统主题(Classic、Luna、Royale、Aero、Aero2(又名 Metro))。它是通过将系统 dll 中的相应资源文件(Aero 主题的 PresentationFramework.Aero 中的 aero.normalcolor.xaml)加载到 Application.Resources.MergedDictionaries 来实现的。如果我们将皮肤添加到此资源字典 - 它会被忽略,因此皮肤将应用于每个活动窗口。这也可以正常工作,但是我们在运行时切换主题时遇到了困难:
如果主题基于相同的系统主题 - 则没有问题,否则我们会得到令人讨厌和不受欢迎的行为:具有应用皮肤的框架元素不会改变通过隐式样式引入的外观(例如,按钮不会改变它的 chrome 和 padding 时皇家主题更改为 aero),此外,如果我们尝试为皮肤和主题存储资源字典的唯一实例,那么我们会遇到具有相同皮肤的主题在视觉上合并到同一主题中的情况:如果我们尝试应用这些主题,则每次都应用首先应用(例如,如果theme1 = royale+ blueskintheme2 = aero+blueskin,那么如果首先应用 theme1 则应用 theme1 和 theme2 在两种情况下都会应用“royale”外观)
是否有任何可能的方法来克服这些问题并在运行时更改 WPF 隐式样式?或者我们没有注意到资源字典的 WPF 机制的一些重要细节?

0 投票
1 回答
31 浏览

.net - 容器窗口的隐式样式

我正在开发一个应用程序,它有一个由子用户控件组成的窗口容器。我有一个 MyStyles.xaml 文档,由各个用户控件及其子控件在控件级别使用。

也就是说,我在每个用户控件内部声明样式,并使用

我如何通过在容器窗口级别定义用户控件的样式来隐含这一点,以便样式向下级联?

提前致谢。

0 投票
1 回答
57 浏览

wpf - 容器内的隐式样式

我想应用Padding="0"Label左侧边栏上的每个(第一个StackPanel),以便它与每个TextBox(和其他控件)左对齐。

如何定义<ApplicationResources>仅适用于特定容器内元素的隐式样式?

备择方案:

  1. 使用x:Key="sidebarLabel". 但是,对于我实际应用程序侧栏中的许多标签,此选项似乎是多余的。
  2. 添加Padding=0到侧栏中的每个Label。这与之前的替代方案基本相同。
  3. 将隐式样式移入<StackPanel.Resources>. 但是,我想将样式 (in App.xaml) 与 XAML (in ) 分开MainWindow.xaml

 

 

0 投票
1 回答
403 浏览

xaml - 以渐变为背景的 XAML 全局样式

您可以在 xaml 中为这样的页面设置渐变背景

但是当我搜索以全局样式执行此操作时要使用的格式时

我发现没有什么可用的。似乎这甚至可能不可行?大多数链接甚至似乎认为没有插件就没有直接支持渐变,所以也许它是 xamarin 表单的新增功能?

我特别想对按钮和内容页面执行此操作,但我怀疑两者的格式相同 - 如果完全支持的话。