定义新的ControlTemplate以保留原始事件

时间:2011-10-18 11:50:49

标签: wpf controltemplate color-picker

我想使用ExtendedWPFToolkits的ColorPicker,但使用自定义的ButtonStyle。 我可以创建一个覆盖项目的Template属性的新外观,但缺少原始模板click事件。

我想保留它,但是如何?

<Controls:ColorPicker >
    <Controls:ColorPicker.ButtonStyle>
        <Style TargetType="{x:Type ToggleButton}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate>
                        <Button Content="ColorPicker"></Button>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </Controls:ColorPicker.ButtonStyle>
</Controls:ColorPicker>

1 个答案:

答案 0 :(得分:2)

你拥有的是无效的。您将Button放在ToggleButton的ControlTemplate中,因此基本上是按钮中的按钮。

您需要执行以下操作:

<Controls:ColorPicker >
    <Controls:ColorPicker.ButtonStyle>
        <Style TargetType="{x:Type ToggleButton}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate>
                        <Border Background="Transparent">
                            <TextBlock Text="ColorPicker" />
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </Controls:ColorPicker.ButtonStyle>
</Controls:ColorPicker>

我添加了一个透明的Border,因此该按钮将能够接收文本未覆盖的区域的鼠标事件。