任务是当鼠标指针位于一行(与列无关(上时,更改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,但元素(DataGrid
、DataGridTemplateColumn
、RowStyle
…(都没有这样的属性。
任务是当鼠标指针位于一行(不考虑列(上时,更改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>