如何处理鼠标在DataGrid行上的操作



任务是当鼠标指针位于一行(与列无关(上时,更改DataGridTemplateColumn内元素的Visibility属性。

<controls:DataGridTemplateColumn>
<controls:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid>
<TextBlock VerticalAlignment="Center"
Margin="12, 0, 0, 0"
Text="Mouse is not over" />
<!-- Visible only if the mouse pointer is over a row -->
<Button VerticalAlignment="Stretch"
HorizontalAlignment="Stretch">
Mouse is over
</Button>
</Grid>
</DataTemplate>
</controls:DataGridTemplateColumn.CellTemplate>
</controls:DataGridTemplateColumn>

是否可以在UWP中做到这一点,最好是使用MVVM?在WPF中,我可能会使用DataTrigger(但Style没有Triggers属性(或绑定属性IsMouseOver,但元素(DataGridDataGridTemplateColumnRowStyle…(都没有这样的属性。

任务是当鼠标指针位于一行(不考虑列(上时,更改DataGridTemplateColumn内元素的Visibility属性。

当然,当鼠标指针位于一行上时,可以使用xaml行为EventTriggerBehavior来更改DataGridTemplateColumn内元素的Visibility属性。

例如

<controls:DataGridTemplateColumn Header="Check" Tag="Test1">
<controls:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Interactivity:Interaction.Behaviors>
<Interactions:EventTriggerBehavior EventName="PointerExited">
<Interactions:ChangePropertyAction
PropertyName="Visibility"
TargetObject="{Binding ElementName=Button1}"
Value="Collapsed" />
</Interactions:EventTriggerBehavior>
<Interactions:EventTriggerBehavior EventName="PointerEntered">
<Interactions:ChangePropertyAction
PropertyName="Visibility"
TargetObject="{Binding ElementName=Button1}"
Value="Visible" />
</Interactions:EventTriggerBehavior>
</Interactivity:Interaction.Behaviors>
<TextBlock Text="{Binding Name}" />
<Button
x:Name="Button1"
Content="test1"
Visibility="Collapsed" />
</StackPanel>
</DataTemplate>
</controls:DataGridTemplateColumn.CellTemplate>
</controls:DataGridTemplateColumn>

最新更新