2012-05-14 165 views
0

我想採用Datagrid Cell的事件觸發器。我的意思是說我想寫這樣的事情WPF DatagridCell事件觸發器

**<EventTrigger EventName="MouseEnter">** 

,然後從XAML調用此函數:

無效Cell_MouseEnter(對象發件人,發送MouseEventArgs E)

我該怎麼做:

我有這個在XAML

<ctrls:RhinoDataGrid x:Name="dataGrid" Grid.Row="1" Margin="5" ItemsSource="{Binding Model.CurrentDataTable}" 
          Style="{StaticResource RhinoDataGridBaseStyle}" IsReadOnly="{Binding Model.IsLinkFile}" 
          SelectedValue="{Binding Model.CurrentDataRow}" SelectedValuePath="Row"         SetAutomappingOnOff="{Binding IsAutoMap, Mode=TwoWay}" > 
      </ctrls:RhinoDataGrid> 


    <Style TargetType="{x:Type DataGridCell}"> 
      <Setter Property="BorderBrush" Value="Transparent"></Setter> 
      <Setter Property="BorderThickness" Value="2"></Setter> 
      <Style.Triggers> 
       <Trigger Property="IsSelected" Value="True"> 
        <Setter Property="Foreground" Value="White"></Setter> 
        <Setter Property="BorderBrush" Value="{DynamicResource ActiveItemBrush}"></Setter> 
        <Setter Property="BorderThickness" Value="2"></Setter> 
       </Trigger> 
      </Style.Triggers>    

請幫助

感謝 迪

回答

0

檢查 「IsMouseOver」 代替。我假設「RhinoDataGrid」繼承自我們已知的WPF的DataGrid。

+0

IsMouseOver - 僅適用於風格XAML 我不得不調用代碼隱藏事件,這樣我就可以得到Cell對象 –

+0

無效Cell_MouseEnter(對象發件人,MouseEventArgs e) { }它應該調用此 –

0
<Style TargetType="{x:Type DataGridCell}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type DataGridCell}"> 
       <Grid Mouse.MouseEnter="Cell_MouseEnter" Background="{TemplateBinding Background}">  
       <ContentPresenter/> 
       </Grid> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 
+0

無法在樣式中的Target標籤上指定事件'MouseEnter'。改用EventSetter。 –

+0

我發佈之前運行上面的代碼 - 它不僅編譯,它在Cell_MouseEnter() –

0

你混淆了EventSetterEventTrigger ....

<Style TargetType="{x:Type DataGridCell}"> 
     <EventSetter Event="MouseEnter" Handler="Cell_MouseEnter"/> 
    </Style> 
+0

命中斷點我有錯誤:無法在樣式中的Target標籤上指定事件'MouseEnter'。改用EventSetter。有什麼特別與我的數據網格。我在網上查詢,併爲它的每一個工作 –