2017-03-16 12 views
0

産業用タッチスクリーンPCプログラムの誤操作を防ぐため、ヒットエリアの小さいボタンを作成しようとしています。ここでa sample、 のみthe white area should response to touch and mouse operations.ビジュアルエリアよりもヒットエリアの小さいボタンを作成するにはどうすればいいですか?

私はControlTemplateの

<ControlTemplate x:Key="ButtonToTouch" TargetType="{x:Type Button}"> 
    <Grid> 
     <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}"/> 
     <Button Background="{x:Null}" BorderBrush="{x:Null}" FontSize="{TemplateBinding FontSize}" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"> 
      <Button.Content> 
       <Grid Margin="8" > 
        <ContentPresenter Content="{TemplateBinding Content}" HorizontalAlignment="Center" VerticalAlignment="Center" /> 
        <Rectangle Fill="Transparent" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"/> 
       </Grid> 
      </Button.Content> 
     </Button> 
    </Grid> 
</ControlTemplate> 

を使用することを試みたが今マウスが入るイベントがそのように動作しますが、ボタンテンプレート内のすべての可視のピクセルは、クリックイベントをトリガすることができているようですので、私はnullの境界線の背景を設定し、テンプレートのどこかに背景を設定する必要があります。

提案がありますか?助けてくれてありがとう。

答えて

0

セットIsHitTestVisible="False"ボーダー上。 8マージングリッドでは、8pxワイドエリアは入力を登録しません。

<ControlTemplate x:Key="ButtonToTouch" TargetType="{x:Type Button}"> 
    <Grid> 
     <Border BorderBrush="{TemplateBinding BorderBrush}" 
       IsHitTestVisible="False" 
       BorderThickness="{TemplateBinding BorderThickness}" 
       Background="{TemplateBinding Background}"/> 

     <Grid Margin="8"> 
      <ContentPresenter Content="{TemplateBinding Content}" HorizontalAlignment="Center" VerticalAlignment="Center" /> 
      <Rectangle Fill="Transparent" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"/> 
     </Grid> 
    </Grid> 
</ControlTemplate> 
+0

私のコードでは、 'IsHitTestVisible =" False "'をボーダーに追加してもうまく動作します。それから私はあなたのことを試しました、それは動作しますが、MouseOverとClickのすべてのアニメーションは失敗しました。多分私は本当にここに別のボタンが必要です。ご協力いただきありがとうございます。 – foxsheep

+0

@foxsheep、標準ボタンテンプレートには、IsMouseOver = trueまたはIsPressed = trueのときに背景を変更するテンプレートトリガが含まれています。 ButtonToTouchテンプレートにはこれらのトリガがありません(通常、コントロールテンプレートをカスタマイズすると、それらを基本テンプレートからコピーする必要があります)。 – ASh

+0

''を追加した後はうまくいきます。これは他のボタンを追加するよりはるかに直接的です。再度、感謝します。 – foxsheep

関連する問題