gpt4 book ai didi

c# - WPF 资源覆盖

转载 作者:太空宇宙 更新时间:2023-11-03 19:13:04 29 4
gpt4 key购买 nike

我对 xaml wpf 中的样式有疑问。

我有一个适用于所有对象的默认样式。但对于其中一些,我想设置第二种样式来覆盖一些属性。

现在,如果我为第二个样式提供 x:key="style2"并将其设置为样式,则不会应用我的第一个默认样式,但会应用默认 WPF 样式。我不能/不想在我的第一个默认样式中更改任何内容

我该如何解决这个问题?

最佳答案

为确保您的默认样式仍然适用,您添加

BasedOn={StaticResource ResourceKey={x:Type ControlType}}

其中 ControlType 是应用默认样式的对象类型。

这是一个例子:

enter image description here

<Window x:Class="StyleOverrides.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="FontFamily" Value="Comic Sans MS" />
</Style>
<Style x:Key="Specialization"
TargetType="{x:Type TextBlock}"
BasedOn="{StaticResource ResourceKey={x:Type TextBlock}}"
>
<Setter Property="FontStyle" Value="Italic" />
<Setter Property="Foreground" Value="Blue" />
</Style>
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Viewbox Grid.Row="0" >
<TextBlock>This uses the default style</TextBlock></Viewbox>
<Viewbox Grid.Row="1">
<TextBlock Style="{StaticResource Specialization}">
This is the specialization
</TextBlock>
</Viewbox>
</Grid>
</Window>

关于c# - WPF 资源覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19113500/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com