none
wpf DataGrid 中怎么使用 FluidMoveBehavior实现数据滚动时的缓动效果 RRS feed

答案

  • 你好,

    这个需求是可以实现的,我们可以自定义DataGrid的ItemsPanelTemplate,添加FluidMoveBehavior这个Behavior, 以下为我的示例:

    <Window.Resources>
            <ItemsPanelTemplate x:Key="ItemsPanelTemplate1">
                <StackPanel>
                    <i:Interaction.Behaviors>
                        <ei:FluidMoveBehavior Duration="0:0:3" AppliesTo="Children">
                            <ei:FluidMoveBehavior.EaseY>
                                <CubicEase EasingMode="EaseInOut"/>
                            </ei:FluidMoveBehavior.EaseY>
                            <ei:FluidMoveBehavior.EaseX>
                                <CubicEase EasingMode="EaseInOut"/>
                            </ei:FluidMoveBehavior.EaseX>
                        </ei:FluidMoveBehavior>
                    </i:Interaction.Behaviors>
                </StackPanel>
            </ItemsPanelTemplate>
        </Window.Resources>
        <Grid>
            <DataGrid ItemsPanel="{DynamicResource ItemsPanelTemplate1}" ItemsSource="{Binding}" AutoGenerateColumns="False" >
                <DataGrid.Columns>
                    <DataGridTemplateColumn Header="Column">
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <StackPanel Background="{Binding MyColor}">
                                    <TextBlock Text="{Binding Name}"/>
                                </StackPanel>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
                </DataGrid.Columns>
            </DataGrid>
        </Grid>

    后台ObservableCollection中添加几百个自定义类的示例,运行效果:


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2014年6月20日 9:31
    版主

全部回复

  • FluidMoveBehavior是使用在itemspanel里的。datagrid并不具有这个所以除非重写控件加入itemspanel,不然这个效果应该较难使用在datagrid上。个人认为datagrid里面结构和机制较为复杂,太大程度的改写风险略大,不太推荐使用这个behavior加载datagrid上。
    2014年6月20日 6:31
  • 你好,

    这个需求是可以实现的,我们可以自定义DataGrid的ItemsPanelTemplate,添加FluidMoveBehavior这个Behavior, 以下为我的示例:

    <Window.Resources>
            <ItemsPanelTemplate x:Key="ItemsPanelTemplate1">
                <StackPanel>
                    <i:Interaction.Behaviors>
                        <ei:FluidMoveBehavior Duration="0:0:3" AppliesTo="Children">
                            <ei:FluidMoveBehavior.EaseY>
                                <CubicEase EasingMode="EaseInOut"/>
                            </ei:FluidMoveBehavior.EaseY>
                            <ei:FluidMoveBehavior.EaseX>
                                <CubicEase EasingMode="EaseInOut"/>
                            </ei:FluidMoveBehavior.EaseX>
                        </ei:FluidMoveBehavior>
                    </i:Interaction.Behaviors>
                </StackPanel>
            </ItemsPanelTemplate>
        </Window.Resources>
        <Grid>
            <DataGrid ItemsPanel="{DynamicResource ItemsPanelTemplate1}" ItemsSource="{Binding}" AutoGenerateColumns="False" >
                <DataGrid.Columns>
                    <DataGridTemplateColumn Header="Column">
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <StackPanel Background="{Binding MyColor}">
                                    <TextBlock Text="{Binding Name}"/>
                                </StackPanel>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
                </DataGrid.Columns>
            </DataGrid>
        </Grid>

    后台ObservableCollection中添加几百个自定义类的示例,运行效果:


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2014年6月20日 9:31
    版主
  • 非常感谢 ,效果出来了!
    2014年6月23日 0:48
  • 谢谢你的建议
    2014年6月23日 0:49
  • 你好 ! wpf中有没有组件实现这个类似的功能,我实现这功能后老大说不要用代码写,要用用组件
    2014年6月26日 12:00
  • wpf中有没有组件可以实现这个效果
    2014年6月26日 12:01
  • 你好 ! wpf中有没有组件实现这个类似的功能,我实现这功能后老大说不要用代码写,要用用组件

    你好,

    据我所知,微软官方是没有这种组件的,一些三方组件是有的,你可以Bing搜索WPF Fluid Control


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2014年6月27日 1:58
    版主
  • 找不到啊 ,能麻烦你帮忙找下吗
    2014年6月27日 3:11
  • 找不到啊 ,能麻烦你帮忙找下吗
    Telerik 的 RadFluidContentControl 貌似可以,不过是收费的
    2014年6月27日 6:38
  • 嗯,费用公司会出的
    2014年6月27日 8:27