我认为做以下事情可能是很常见的:
<Grid>
<Border>
<Border.Effect>
<DropShadowEffect/>
</Border.Effect>
</Border>
<SomeControl/>
</Grid>好吧,我是在没有ide的帮助下做到这一点的,我承认我在没有ide的情况下迷失了,所以如果我忘记了什么,请原谅我,但我想你明白这一点。
我的问题是,有没有可能创建一个允许我这样做的UserControl:
<DropShadowBorder>
<SomeControl/>
</DropShadowBorder>如果是这样的话,请告诉我是怎么做的。
编辑:如果不是很明显,这里的要点是我通常会在我的控件周围放置一个边框,但当我想使用投影时,我不能这样做,因为我只想让边框有一个投影,而不是其中的所有内容。因此,我不得不在相同的网格空间中单独创建边框,但这很烦人,因为当我在我的控件上调整边距等时,我每次都必须在边框上复制这些更改。
发布于 2013-01-27 22:16:42
你不能做用户控件(用户控件不能有内容)。您必须创建自定义控件。我建议您创建一个从ContentControl派生的自定义控件。
自定义控件的代码(默认代码!):
public class DropShadowBorder : ContentControl
{
static DropShadowBorder()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(DropShadowBorder), new FrameworkPropertyMetadata(typeof(DropShadowBorder)));
}
}然后定义控件的默认样式(在generic.xaml中)
<Style TargetType="{x:Type local:DropShadowBorder}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:DropShadowBorder}">
<Grid>
<Border Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
<Border.Effect>
<DropShadowEffect />
</Border.Effect>
</Border>
<ContentPresenter Content="{TemplateBinding Content}"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>https://stackoverflow.com/questions/14548227
复制相似问题