WPF问题。我不确定要谷歌用什么。
我有一个usercontrol:
<UserControl x:Class="MyProj.MyControl"
x:Name="Self"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Button />
</UserControl>
我这样用:
<local:MyControl Background="Green" />
但背景似乎没有改变。这是因为按钮的背景没有改变。我希望按钮的背景使用usercontrol的背景。
我想我可以这样做:
<UserControl x:Class="MyProj.MyControl"
x:Name="Self"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Button Background="{Binding Path=Background, ElementName=Self" />
</UserControl>
但我非常希望Control和ContentControl中的所有继承属性都应用于按钮(ToolTip,BorderThickness,BorderBrush等)。
那么我该怎么办呢?
<UserControl x:Class="MyProj.MyControl"
x:Name="Self"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Button Background="{Binding Path=Background, ElementName=Self"
ToolTip="{Binding Path=ToolTip, ElementName=Self"
BorderThickness="{Binding Path=BorderThickness, ElementName=Self"
BorderBrush="{Binding Path=BorderBrush, ElementName=Self"
...
...
...
... />
</UserControl>
(注意:这是一个较小的(我实际上可以管理的最小)一个较大的UserControl示例,它包含许多控件。)
答案 0 :(得分:1)
唉。那么,简短的回答:你不能,至少不容易。 XAML不像HTML / CSS那样工作。 Button
(就此而言,几乎任何Control
)默认情况下不会从其容器继承属性。
您可以制作您自己的Button
等继承的控件...或者,您可能能够声明适用于所有内容的Style
并尝试抓住任何包含元素的属性(即通过RelativeSource FindAncestor
)...或者你可以做你在这里做的事情:手动设置每个属性。
Style
方法的示例:
<Style TargetType="{x:Type Control}">
<Setter
Property="Background"
Value="{Binding (Control.Background), RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Control}}}"/>
</Style>