2

私はButton内部に aを持っていUserControlます:

<UserControl.Resources>
    <ControlTemplate x:Key="ButtonTemplate" TargetType="{x:Type Button}">
        <ContentPresenter />
    </ControlTemplate>
</UserControl.Resources>    
<Button Template="{StaticResource ButtonTemplate}" Click="Button_Click" />

しかし、 を指定するとTemplate、この Button はClickイベントを発生させません。
なんで?どうすればこの問題を解決できますか?

分離コード:

public event RoutedEventHandler Click;

private void Button_Click(object sender, RoutedEventArgs e)
{
    if (Click != null)
        Click(sender, e);
}
4

1 に答える 1

2

ボタンテンプレートは単純なContentPresenterです。あなたが私たちに与えるコードでは、あなたはボタンに何も入れないので、それはどんなサイズにもなりません。クリックできなくなります。

<Window x:Class="StackOverflow.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:sys="clr-namespace:System;assembly=mscorlib"
    Title="MainWindow">

<Window.Resources>
    <ControlTemplate x:Key="ButtonTemplate" TargetType="{x:Type Button}">
        <ContentPresenter />
    </ControlTemplate>
</Window.Resources>

<Button Template="{StaticResource ButtonTemplate}" Click="Button_Click">
    <TextBlock Text="test" />
</Button>

</Window>

このコードは機能し、「テスト」をクリックすると、ボタンのクリックイベントが正しくトリガーされます。ウィンドウで実行しましたが、UserControlでも同じです。

カスタムクリックイベントについて話している場合は、ハンドラーをアタッチした場合にのみ発生します。

于 2012-10-19T14:38:40.793 に答える