Определите новый ControlTemplate, сохраняя исходные события - PullRequest
1 голос
/ 18 октября 2011

Я хочу использовать ColorPicker для ExtendedWPFToolkits, но с пользовательским ButtonStyle. Я могу создать новый вид, переопределяя свойство Template элемента, но исходное событие щелчка по шаблону отсутствует.

Я хочу оставить это, но как?

<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 Ответ

2 голосов
/ 18 октября 2011

То, что у вас есть, недействительно.Вы помещаете Button в ControlTemplate ToggleButton, поэтому в основном это кнопка в кнопке.

Вам нужно сделать что-то вроде:

<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, поэтому кнопка сможет получать события мыши для областей, не охватываемых текстом.

...