2010-01-30 13 views
8

Mam specjalne ControlTemplate dla niektórych z moich Button s.WPF: Tworzenie całego "bloku" ścieżki klikalnej

<ControlTemplate TargetType="{x:Type Button}"> 
    <Path Name="ThePath" Fill="White" Stretch="UniformToFill" 
      Width="12" Height="12" Stroke="White" 
      StrokeThickness="4" 
      Data="M1.5,1.5 L10.5,10.5 M1.5,10.5 L10.5,1.5"/> 
    <ControlTemplate.Triggers> 
     <Trigger Property="IsFocused" Value="True"> 
      <Setter Property="Fill" Value="#afa" TargetName="ThePath"/> 
     </Trigger> 
    </ControlTemplate.Triggers> 
</ControlTemplate> 

Działa to dobrze, ale ponieważ używam Path (w tym przypadku, to jest po prostu w kształcie tłuszczu X), dokładnie ścieżka jest klikalny, a nie mała przestrzeń między narożach X. Czy jest coś automagicznego, co można zrobić, aby cały "blok" X klikalny?

Rozważałem zawijanie ścieżki w prostokątnym obiekcie, ale chciałbym się upewnić, że nie brakuje mi czegoś trywialnego.

+1

Niczego nie brakuje, tak się robi (zawijanie w prostokąt, siatkę, płótno lub cokolwiek z niezerowym tłem –

Odpowiedz

16

Aviad P. jest poprawny. To co mam zrobić:

<Border Background="Transparent"> 
    <Path ... /> 
</Border> 

To działa, ponieważ kiedy „hit test”, aby określić, gdzie kliknięcie myszą powinny być kierowane, w „Transparent” szczotka jest traktowana tak, jakby to był regularny kolor.

+0

Jedna uwaga: nie trzeba * owijać * ścieżki w cokolwiek, można po prostu użyć drugiej ścieżki w szablonie, która zawiera kształt, który powinien być klikalny i ustawić 'Fill =" Transparent "' (Musiałem mieć klikalny okrągły kształt i nie chcieć bawić się "Border" i 'CornerRadius' w moim przypadku) – Joey

+0

To działało tylko dla mnie, gdy dodałem' IsHitTestVisible = "True" 'do' Border' –

Powiązane problemy