【发布时间】:2016-01-30 15:25:42
【问题描述】:
我有这个代码
查看
<DataGrid x:Name="dgFactures" ScrollViewer.VerticalScrollBarVisibility="Auto" Width="auto">
<i:Interaction.Triggers>
<i:EventTrigger EventName="ScrollChanged">
<cmd:EventToCommand Command="{Binding ScrollChangedCommand}" PassEventArgsToCommand="True"></cmd:EventToCommand>
</i:EventTrigger>
</i:Interaction.Triggers>
<DataGrid.Columns>
<DataGridTemplateColumn Header="Hébergement">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding Hebergement, Converter={StaticResource NullToFalse}}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Checked">
<cmd:EventToCommand Command="{Binding HebergementCommand}" PassEventArgsToCommand="True"></cmd:EventToCommand>
</i:EventTrigger>
<i:EventTrigger EventName="Unchecked">
<cmd:EventToCommand Command="{Binding HebergementCommand}" PassEventArgsToCommand="True"></cmd:EventToCommand>
</i:EventTrigger>
</i:Interaction.Triggers>
</CheckBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
视图模型
public RelayCommand<RoutedEventArgs> HebergementCommand { get; set; }
public RelayCommand<ScrollChangedEventArgs> ScrollChangedCommand { get; set; }
HebergementCommand = new RelayCommand<RoutedEventArgs>((e) =>
{
PropertyInfo IsChekedInfo = e.Source.GetType().GetProperty("IsChecked");
bool isChecked = (bool)IsChekedInfo.GetValue(e.Source, null);
Hebergement = isChecked;
});
ScrollChangedCommand = new RelayCommand<ScrollChangedEventArgs>((e) =>
{
if (e.HorizontalChange != 0)
{
// Do stuff..
}
});
问题是:
- 当我使用鼠标或单击滚动条在网格中滚动时:
Checked事件被触发,ScrollChanged事件没有触发。 -
ScrollChanged根本没有被解雇
我需要知道:
- 为什么会这样?
- 我该如何解决?
谢谢
【问题讨论】: