2010-06-25 65 views
0

有沒有辦法在xaml中的每一行添加DoubleClickEvent而不是使用datagridcontrol的事件?向xaml中的每一行添加EventToCommand

像這樣的東西(此代碼不工作):

<UserControl 
     xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity" 
     xmlns:cmd="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Extras" 
     xmlns:xcdg="http://schemas.xceed.com/wpf/xaml/datagrid" > 
    <xcdg:UserControl.Resources> 
      <Style TargetType="xcdg:DataRow"> 
       <i:Interaction.Triggers> 
        <i:EventTrigger EventName="MouseDoubleClick"> 
         <cmd:EventToCommand Command="{Binding SelectCommand, Mode=Default}" CommandParameter="{Binding SelectedItem, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type xcdg:DataGridControl}}}" /> 
        </i:EventTrigger> 
       </i:Interaction.Triggers> 
      </Style> 
    </xcdg:UserControl.Resources> 
... 

回答

1

使用,而不是一個風格的模板。 (這假定xceed datagrid的DataRow是模板化的。)

<UserControl ...> 
    <UserControl.Resources> 
     <ResourceDictionary> 
      <DataTemplate x:Key="DataTemplateKey"> 
       <Grid> 
        <i:Interaction.Triggers> 
         <i:EventTrigger EventName="MouseDoubleClick"> 
          <cmd:EventToCommand Command="{Binding SelectCommand}" /> 
         </i:EventTrigger> 
        </i:Interaction.Triggers> 
        <!-- put your row template here --> 
       </Grid> 
       <CheckBox Content="{Binding Path=ApplianceActionID, Converter={StaticResource LookupConverter}, ConverterParameter=ApplianceActionLookupValues}" 
          IsChecked="{Binding Path=IsSelected, Mode=TwoWay}" /> 
      </DataTemplate> 

     </ResourceDictionary> 
    </UserControl.Resources> 

    <!-- UI --> 

</UserControl> 
+0

不幸的是,它不是......或者我找不到如何。 – CodeWeasel 2010-06-28 10:08:53