2015-03-24 59 views
0

我有一個CustomControl以下XAML:放在哪裏交互觸發的ControlTemplate

<Style TargetType="{x:Type itvw:ItemView}"> 
    <Setter Property="Focusable" Value="True"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type itvw:ItemView}"> 
       <Border> 
        <Grid> 
         <TextBox/> 
        </Grid> 
       </Border> 
       <ControlTemplate.Triggers> 
       <!--triggers--> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

我想用交互/ EventToCommand捕捉整個CustomControl keyDown事件。

喜歡的東西:

<i:Interaction.Triggers> 
    <i:EventTrigger EventName="KeyDown"> 
     <cmd:EventToCommand Command="{Binding KeyDownCommand, Mode=OneWay}" PassEventArs="True"/> 
    </i:EventTrigger> 
</i:Interaction.Triggers> 

我的問題是 - 我放在控件模板標記觸發器在哪裏?我想要做的這相當於在後面的代碼:

this.KeyDown += ItemView_KeyDown; 

回答

0

你可以把他們內部控件模板或邊界的元素:

<Style TargetType="{x:Type itvw:ItemView}"> 
<Setter Property="Focusable" Value="True"/> 
<Setter Property="Template"> 
    <Setter.Value> 
     <ControlTemplate TargetType="{x:Type itvw:ItemView}"> 
      <i:Interaction.Triggers> 
       <i:EventTrigger EventName="KeyDown"> 
        <cmd:EventToCommand Command="{Binding KeyDownCommand, Mode=OneWay}" PassEventArs="True"/> 
       </i:EventTrigger> 
      </i:Interaction.Triggers> 
      <Border> 
       <Grid> 
        <TextBox/> 
       </Grid> 
      </Border> 
      <ControlTemplate.Triggers> 
      <!--triggers--> 
      </ControlTemplate.Triggers> 
     </ControlTemplate> 
    </Setter.Value> 
</Setter> 
</Style> 

<Style TargetType="{x:Type itvw:ItemView}"> 
<Setter Property="Focusable" Value="True"/> 
<Setter Property="Template"> 
    <Setter.Value> 
     <ControlTemplate TargetType="{x:Type itvw:ItemView}"> 
      <Border>     
       <i:Interaction.Triggers> 
        <i:EventTrigger EventName="KeyDown"> 
         <cmd:EventToCommand Command="{Binding KeyDownCommand, Mode=OneWay}" PassEventArs="True"/> 
        </i:EventTrigger> 
       </i:Interaction.Triggers> 
       <Grid> 
        <TextBox/> 
       </Grid> 
      </Border> 
      <ControlTemplate.Triggers> 
      <!--triggers--> 
      </ControlTemplate.Triggers> 
     </ControlTemplate> 
    </Setter.Value> 
</Setter> 
</Style> 
+0

感謝。有什麼不同?如果我在邊框中放置鼠標點擊事件,文本框似乎總是關注並且事件不會觸發(我試圖單擊來選擇ItemView,然後再點擊一下開始編輯文本框)。 – jidl 2015-03-25 05:01:30

+0

也是第一個選項抱怨ControlTemplate不是從DependencyObject派生的。有任何想法嗎? – jidl 2015-03-25 05:29:31

+0

@jidl你找到了解決這個問題的解決方案嗎? – 2017-05-15 11:50:31