【问题标题】:WPF DatagridCell Event TriggerWPF DatagridCell 事件触发器
【发布时间】:2012-05-14 18:11:48
【问题描述】:

我想获取 Datagrid Cell 的事件触发器。我的意思是说我想写这样的东西

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

然后从 XAML 调用这个函数:

void Cell_MouseEnter(object sender, 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>            

请帮忙

谢谢 深

【问题讨论】:

    标签: wpf xaml datagrid eventtrigger datagridcell


    【解决方案1】:

    改为检查“IsMouseOver”。我假设“RhinoDataGrid”继承自我们已知的 WPF 的 DataGrid。

    【讨论】:

    • IsMouseOver - 仅适用于 XAML 中的样式我必须调用该代码隐藏事件,以便获取 Cell 对象
    • void Cell_MouseEnter(object sender, MouseEventArgs e) { } 它应该调用这个
    【解决方案2】:
    <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>
    

    【讨论】:

    • 无法在样式中的目标标记上指定事件“MouseEnter”。请改用 EventSetter。
    • 我在发布之前运行了上面的代码——它不仅编译了,而且在 Cell_MouseEnter() 中遇到了断点
    【解决方案3】:

    您将EventSetterEventTrigger 混淆了......

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

    【讨论】:

    • 我遇到错误:无法在样式中的目标标记上指定事件“MouseEnter”。请改用 EventSetter。我的数据网格有什么特别之处吗?我在网上查了一下,每一个都有效
    猜你喜欢
    • 1970-01-01
    • 2012-05-05
    • 1970-01-01
    • 1970-01-01
    • 2013-10-10
    • 1970-01-01
    • 1970-01-01
    • 2013-01-05
    • 1970-01-01
    相关资源
    最近更新 更多