基本上,我想使用TextBlock
覆盖Button
,使用ControlTemplate
(适用于此Button
),但我不想覆盖<Grid Grid.Row="1" Grid.ColumnSpan="2">
<Grid.Resources>
<Style x:Key="myStyle" TargetType="Button">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Grid>
<ContentPresenter />
<TextBlock Text="textBlock"
Margin="10" Foreground="Red"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Grid.Resources>
<Button Style="{StaticResource myStyle}" Content="button1"></Button>
</Grid>
。我想摆脱它的默认模板。
示例:
Button
并且ControlTemplate
删除了它的默认模板:
相反,我想收到这样的内容:
是否可以使用TemplatedParent
?我试图将ContentPresenter.Content
绑定到<ContentPresenter Content="{Binding
RelativeSource={RelativeSource Mode=TemplatedParent},
Path=.,
Mode=TwoWay}"/>
,就像这里:
TextBlock
或其他组合,但我无法使其发挥作用。
修改
因为我希望能够将此Control
不仅应用于按钮(仅作为示例),而且应用于任何Control
,我不希望通过复制每个UserControl
的默认样式(对于资源或某处)。
另外,我不想创建TextBlock
,因为我希望尽可能地保持xaml清洁(我的意思是系统控件) - 并且只是通过使用来打开/关闭覆盖的ControlTemplate
{{1}}。
答案 0 :(得分:1)
您可以在按钮上添加default style并修改它以添加TextBlock
。第二个选项,我的偏好是创建一个新的UserControl,其中包含Button
和TextBlock
IsHitTestVisible=False
。然后,您可以添加依赖项属性,以便能够绑定到按钮和文本块。