自定义形状的WPF控件

时间:2012-01-08 22:27:42

标签: wpf

我正在寻找一种方法来创建一个自定义形状的WPF控件,它可以包含子控件。

简化问题,我需要像非矩形面板这样的东西。

更新 我需要一个“真正的”自定义形状。不捕获形状之外的鼠标事件等。

1 个答案:

答案 0 :(得分:1)

我将从ContentControl派生,然后作为其中的孩子,我会放置一个内容演示者,在内容演示者中,您可以放置​​任何面板,例如画布,您可以在其中托管其他元素。我会将此作为应用于您的控件的模板,并将演示者的内容绑定到控件的content属性,这样添加到控件的content属性会将其添加到将显示它的演示者。这是一个例子:

 <ControlTemplate TargetType="MyCustomControl">
                <Grid DataContext="{Binding RelativeSource={RelativeSource TemplatedParent}}">
                    <ContentPresenter Content="{TemplateBinding ContentControl.Content}"/>
                    <Ellipse x:Name="myEllipse Background="Green"/> <!-- the control won't catch events outside it-->
                </Grid>
 </ControlTemplate>

然后只需将模板应用到您的控件中即可完成设置,如果您想在其中托管其他元素,请不要忘记将面板添加为内容。