标题为,我的意思如下:
<Style TargetType="{x:Type TextBlock}"
TargetType="{x:Type Label}"
TargetType="{x:Type Button}" >
这实际上是为了使用第三方控件,我继承了他们的类。但是模板不适用于SubClass,因为TargetType
在基类上。所以我想设置多个TargetType
以使其能够同时申请。
答案 0 :(得分:48)
不,你不能,但是我经常为共享基类创建一个样式,例如FrameworkElement
,然后创建BasedOn
基本样式的单独控件样式
<Style TargetType="{x:Type FrameworkElement}">
<!-- Shared Setters -->
</Style>
<Style TargetType="{x:Type TextBlock}" BasedOn="{StaticResource {x:Type FrameworkElement}}" />
<Style TargetType="{x:Type Label}" BasedOn="{StaticResource {x:Type FrameworkElement}}" />
<Style TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type FrameworkElement}}" />
答案 1 :(得分:8)
Rachel的答案更灵活的变化是使用resourceKey for BasedOn。
所以,而不是:
<Style TargetType="{x:Type FrameworkElement}">
<!-- Shared Setters -->
</Style>
<Style TargetType="{x:Type TextBlock}" BasedOn="{StaticResource {x:Type FrameworkElement}}" />
做类似的事情:
<Style x:Key="commonStyle" TargetType="{x:Type FrameworkElement}">
<!-- Shared Setters -->
</Style>
<Style TargetType="{x:Type TextBlock}" BasedOn="{StaticResource commonStyle}" />
这提供了更多选项,因为一些样式可以基于commonStyle,有些样式可以基于例如。 commonStyle2,其中commonStyle和commonStyle2都将FrameworkElement作为目标类型。
答案 2 :(得分:2)
答案是否定的。
TargetType
是Style的属性,只能设置一次。为了确保类型安全,样式应该以特定类型为目标,以便知道要设置的属性。
然而,有一个解决方法。您可以获取所有类型的公共属性,并以一种样式定义它们。然后为每个特定控件创建特定样式,并使用BasedOn
属性继承基本样式。
答案 3 :(得分:2)
根据Rachel的回答,为了更清晰的代码,你可以删除标记扩展中的x:Type,只需使用Type:
WinGetHandle
与:
相同<?php
include('src/OAuth2/Server.php'); # make sure the path is correct.
class customServer extends Server {
public __construct(($storage = array(), array $config = array(), array $grantTypes = array(), array $responseTypes = array(), TokenTypeInterface $tokenType = null, ScopeInterface $scopeUtil = null, ClientAssertionTypeInterface $clientAssertionType = null)) {
parent::_construct($storage, $config, $grantTypes, $responseTypes, $tokenType, $scopeUtil, $clientAssertionType);
}
}
public function __destruct() {
// run your cleanup SQL from here.
}
答案 4 :(得分:0)
实际上我发现在网格中你只能设置一个项目的样式。但是,在堆栈面板中,您可以设置多个项目的样式。
请参阅此代码:
<Grid>
<StackPanel>
<StackPanel.Resources>
<Style TargetType="TextBlock">
<Setter Property="FontSize" Value="12"></Setter>
<Setter Property="VerticalAlignment" Value="Center"></Setter>
<Setter Property="HorizontalAlignment" Value="Center"></Setter>
<Setter Property="Margin" Value="5"></Setter>
</Style>
<Style TargetType="TextBox">
<Setter Property="Width" Value="100"></Setter>
<Setter Property="Height" Value="25"></Setter>
<Setter Property="Margin" Value="5"></Setter>
</Style>
<Style TargetType="Button">
<Setter Property="Margin" Value="5"></Setter>
<Setter Property="Height" Value="30"></Setter>
<Setter Property="Width" Value="100"></Setter>
</Style>
</StackPanel.Resources>
<StackPanel Orientation="Horizontal">
<TextBlock>Kanban ID</TextBlock>
<TextBox></TextBox>
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>Customer Name</TextBlock>
<TextBox></TextBox>
</StackPanel>
<Button>Save</Button>
</StackPanel>
</Grid>
如果您要移除它下方的位置并更改为您将看到没有设置对象,只会更改最后一个对象的属性。
希望这会有所帮助。