wpf DataGrid下面剩余空间背景问题

问题描述

WPF的DataGrid,当数据较少时,下方会出现空白:如何实现下面的效果:注意,只有一行数据,下方的行是背景。

解决方案

解决方案二:
本身都没有那么多条目数据干嘛要显示到底部。第一张图区域属于DataGrid么?
解决方案三:
属于啊,那个红圈部分是DataGrid的背景区域。
解决方案四:
引用1楼duanzi_peng的回复:

本身都没有那么多条目数据干嘛要显示到底部。第一张图区域属于DataGrid么?

属于啊,那个红圈部分是DataGrid的背景区域。这个纯粹是为了效果,不是说没有这么多条目数据就不要显示到底部。
解决方案五:
引用3楼mjy448634095的回复:

Quote: 引用1楼duanzi_peng的回复:
本身都没有那么多条目数据干嘛要显示到底部。第一张图区域属于DataGrid么?

属于啊,那个红圈部分是DataGrid的背景区域。这个纯粹是为了效果,不是说没有这么多条目数据就不要显示到底部。

这个是样式问题。
解决方案六:
引用4楼duanzi_peng的回复:

Quote: 引用3楼mjy448634095的回复:
Quote: 引用1楼duanzi_peng的回复:
本身都没有那么多条目数据干嘛要显示到底部。第一张图区域属于DataGrid么?

属于啊,那个红圈部分是DataGrid的背景区域。这个纯粹是为了效果,不是说没有这么多条目数据就不要显示到底部。

这个是样式问题。

我知道是样式问题,可是我修改样式无法解决这个问题。canyou?
解决方案七:
somebody?
解决方案八:
引用5楼mjy448634095的回复:

Quote: 引用4楼duanzi_peng的回复:
Quote: 引用3楼mjy448634095的回复:
Quote: 引用1楼duanzi_peng的回复:
本身都没有那么多条目数据干嘛要显示到底部。第一张图区域属于DataGrid么?

属于啊,那个红圈部分是DataGrid的背景区域。这个纯粹是为了效果,不是说没有这么多条目数据就不要显示到底部。

这个是样式问题。

我知道是样式问题,可是我修改样式无法解决这个问题。canyou?

你的样式呢?贴出来
解决方案九:
引用7楼duanzi_peng的回复:

Quote: 引用5楼mjy448634095的回复:
Quote: 引用4楼duanzi_peng的回复:
Quote: 引用3楼mjy448634095的回复:
Quote: 引用1楼duanzi_peng的回复:
本身都没有那么多条目数据干嘛要显示到底部。第一张图区域属于DataGrid么?

属于啊,那个红圈部分是DataGrid的背景区域。这个纯粹是为了效果,不是说没有这么多条目数据就不要显示到底部。

这个是样式问题。

我知道是样式问题,可是我修改样式无法解决这个问题。canyou?

你的样式呢?贴出来

我的样式没解决问题就删了,没解决贴出来也没用啊。这个问题我搜GOOGLE也只找到一个歪果人提过这个问题,也是没有人能解决。
解决方案十:
这个样式怎么样??你把你的样式贴出来,我给你解决呀。
解决方案十一:
可以取个巧,你把数据源绑定在一个DataTable里面,然后判断DataTable的行数量够不够填满,不够就给DataTable增加空的行。whlie(dt.rows.count<10){DataRowdr=dt.newrow();dt.add(dr);}
解决方案十二:
引用9楼duanzi_peng的回复:

这个样式怎么样??你把你的样式贴出来,我给你解决呀。

代码太长了,贴不上来,怎么办?
解决方案十三:
引用8楼mjy448634095的回复:

Quote: 引用7楼duanzi_peng的回复:
Quote: 引用5楼mjy448634095的回复:
Quote: 引用4楼duanzi_peng的回复:
Quote: 引用3楼mjy448634095的回复:
Quote: 引用1楼duanzi_peng的回复:
本身都没有那么多条目数据干嘛要显示到底部。第一张图区域属于DataGrid么?

属于啊,那个红圈部分是DataGrid的背景区域。这个纯粹是为了效果,不是说没有这么多条目数据就不要显示到底部。

这个是样式问题。

我知道是样式问题,可是我修改样式无法解决这个问题。canyou?

你的样式呢?贴出来

我的样式没解决问题就删了,没解决贴出来也没用啊。这个问题我搜GOOGLE也只找到一个歪果人提过这个问题,也是没有人能解决。

你这样式不行啊,跟我的要求不符,下面还有空白。
解决方案十四:
引用9楼duanzi_peng的回复:

这个样式怎么样??你把你的样式贴出来,我给你解决呀。

<Windowx:Class="wpfTest.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:wpfTest"xmlns:controls="clr-namespace:wpfTest.controls"xmlns:sys="clr-namespace:System;assembly=mscorlib"mc:Ignorable="d"Title="MainWindow"Height="500"Width="700"><Window.Resources><StyleTargetType="DataGridRow"><SetterProperty="SnapsToDevicePixels"Value="True"/><SetterProperty="Background"Value="GhostWhite"/><SetterProperty="FontWeight"Value="Normal"/><SetterProperty="ContextMenu"Value="{x:Null}"/><Style.Triggers><TriggerProperty="AlternationIndex"Value="1"><SetterProperty="Background"Value="#FFF4F4F4"/></Trigger><TriggerProperty="IsMouseOver"Value="True"><SetterProperty="Background"Value="#FFD6EDB3"/></Trigger><TriggerProperty="IsSelected"Value="True"><SetterProperty="Background"Value="#FFE8F6D8"/></Trigger></Style.Triggers></Style><StyleTargetType="{x:TypeDataGrid}"><SetterProperty="Foreground"Value="{DynamicResource{x:StaticSystemColors.ControlTextBrushKey}}"/><SetterProperty="BorderBrush"><Setter.Value><LinearGradientBrushEndPoint="0.5,1"StartPoint="0.5,0"><GradientStopColor="{DynamicResourceBorderLightColor}"Offset="0"/><GradientStopColor="{DynamicResourceBorderDarkColor}"Offset="1"/></LinearGradientBrush></Setter.Value></Setter><SetterProperty="BorderThickness"Value="1"/><SetterProperty="RowDetailsVisibilityMode"Value="VisibleWhenSelected"/><SetterProperty="ScrollViewer.CanContentScroll"Value="true"/><SetterProperty="ScrollViewer.PanningMode"Value="Both"/><SetterProperty="Stylus.IsFlicksEnabled"Value="False"/><SetterProperty="Template"><Setter.Value><ControlTemplateTargetType="{x:TypeDataGrid}"><Borderx:Name="border"SnapsToDevicePixels="True"BorderBrush="{TemplateBindingBorderBrush}"BorderThickness="{TemplateBindingBorderThickness}"Padding="{TemplateBindingPadding}"><Border.Background><SolidColorBrushColor="{DynamicResourceControlLightColor}"/></Border.Background><VisualStateManager.VisualStateGroups><VisualStateGroupx:Name="CommonStates"><VisualStatex:Name="Disabled"><Storyboard><ColorAnimationUsingKeyFramesStoryboard.TargetName="border"Storyboard.TargetProperty="(Panel.Background).(SolidColorBrush.Color)"><EasingColorKeyFrameKeyTime="0"Value="{DynamicResourceControlLightColor}"/></ColorAnimationUsingKeyFrames></Storyboard></VisualState><VisualStatex:Name="Normal"/></VisualStateGroup></VisualStateManager.VisualStateGroups><ScrollViewerx:Name="DG_ScrollViewer"Focusable="false"Background="Black"><ScrollViewer.Template><ControlTemplateTargetType="{x:TypeScrollViewer}"><Grid><Grid.ColumnDefinitions><ColumnDefinitionWidth="Auto"/><ColumnDefinitionWidth="*"/></Grid.ColumnDefinitions><Grid.RowDefinitions><RowDefinitionHeight="Auto"/><RowDefinitionHeight="*"/><RowDefinitionHeight="Auto"/></Grid.RowDefinitions><ButtonFocusable="false"Command="{x:StaticDataGrid.SelectAllCommand}"Style="{DynamicResource{ComponentResourceKeyResourceId=DataGridSelectAllButtonStyle,TypeInTargetAssembly={x:TypeDataGrid}}}"Visibility="{BindingHeadersVisibility,ConverterParameter={x:StaticDataGridHeadersVisibility.All},Converter={x:StaticDataGrid.HeadersVisibilityConverter},RelativeSource={RelativeSourceAncestorType={x:TypeDataGrid}}}"Width="{BindingCellsPanelHorizontalOffset,RelativeSource={RelativeSourceAncestorType={x:TypeDataGrid}}}"/><DataGridColumnHeadersPresenterx:Name="PART_ColumnHeadersPresenter"Grid.Column="1"Grid.ColumnSpan="2"Visibility="{BindingHeadersVisibility,ConverterParameter={x:StaticDataGridHeadersVisibility.Column},Converter={x:StaticDataGrid.HeadersVisibilityConverter},RelativeSource={RelativeSourceAncestorType={x:TypeDataGrid}}}"/><BorderGrid.ColumnSpan="2"Grid.Row="1"Height="{BindingRelativeSource={RelativeSourceMode=FindAncestor,AncestorType=DataGrid},Path=Height}"Background="{BindingRelativeSource={RelativeSourceMode=FindAncestor,AncestorType=DataGrid},Path=Background}"><ScrollContentPresenterx:Name="PART_ScrollContentPresenter"CanContentScroll="{TemplateBindingCanContentScroll}"/></Border><ScrollBarx:Name="PART_VerticalScrollBar"HorizontalAlignment="Right"Grid.Row="1"Grid.ColumnSpan="2"ViewportSize="{TemplateBindingViewportHeight}"Maximum="{TemplateBindingScrollableHeight}"Visibility="{TemplateBindingComputedVerticalScrollBarVisibility}"Value="{BindingVerticalOffset,Mode=OneWay,RelativeSource={RelativeSourceTemplatedParent}}"><ScrollBar.Template><ControlTemplate><Trackx:Name="PART_Track"IsDirectionReversed="true"><Track.DecreaseRepeatButton><RepeatButtonCommand="ScrollBar.LineUpCommand"Background="Transparent"BorderThickness="0"/></Track.DecreaseRepeatButton>
解决方案十五:
引用12楼mjy448634095的回复:

Quote: 引用8楼mjy448634095的回复:
Quote: 引用7楼duanzi_peng的回复:
Quote: 引用5楼mjy448634095的回复:
Quote: 引用4楼duanzi_peng的回复:
Quote: 引用3楼mjy448634095的回复:
Quote: 引用1楼duanzi_peng的回复:
本身都没有那么多条目数据干嘛要显示到底部。第一张图区域属于DataGrid么?

属于啊,那个红圈部分是DataGrid的背景区域。这个纯粹是为了效果,不是说没有这么多条目数据就不要显示到底部。

这个是样式问题。

我知道是样式问题,可是我修改样式无法解决这个问题。canyou?

你的样式呢?贴出来

我的样式没解决问题就删了,没解决贴出来也没用啊。这个问题我搜GOOGLE也只找到一个歪果人提过这个问题,也是没有人能解决。

你这样式不行啊,跟我的要求不符,下面还有空白。

那你就别设置datagrid的高度。
解决方案:
引用14楼duanzi_peng的回复:

Quote: 引用12楼mjy448634095的回复:
Quote: 引用8楼mjy448634095的回复:
Quote: 引用7楼duanzi_peng的回复:
Quote: 引用5楼mjy448634095的回复:
Quote: 引用4楼duanzi_peng的回复:
Quote: 引用3楼mjy448634095的回复:
Quote: 引用1楼duanzi_peng的回复:
本身都没有那么多条目数据干嘛要显示到底部。第一张图区域属于DataGrid么?

属于啊,那个红圈部分是DataGrid的背景区域。这个纯粹是为了效果,不是说没有这么多条目数据就不要显示到底部。

这个是样式问题。

我知道是样式问题,可是我修改样式无法解决这个问题。canyou?

你的样式呢?贴出来

我的样式没解决问题就删了,没解决贴出来也没用啊。这个问题我搜GOOGLE也只找到一个歪果人提过这个问题,也是没有人能解决。

你这样式不行啊,跟我的要求不符,下面还有空白。

那你就别设置datagrid的高度。

那也不行,这个控件是放在界面中间的,预留的空间已经给好了,高度是固定的。顺便问下,代码太长,怎么贴出来啊?
解决方案:
引用15楼mjy448634095的回复:

Quote: 引用14楼duanzi_peng的回复:
Quote: 引用12楼mjy448634095的回复:
Quote: 引用8楼mjy448634095的回复:
Quote: 引用7楼duanzi_peng的回复:
Quote: 引用5楼mjy448634095的回复:
Quote: 引用4楼duanzi_peng的回复:
Quote: 引用3楼mjy448634095的回复:
Quote: 引用1楼duanzi_peng的回复:
本身都没有那么多条目数据干嘛要显示到底部。第一张图区域属于DataGrid么?

属于啊,那个红圈部分是DataGrid的背景区域。这个纯粹是为了效果,不是说没有这么多条目数据就不要显示到底部。

这个是样式问题。

我知道是样式问题,可是我修改样式无法解决这个问题。canyou?

你的样式呢?贴出来

我的样式没解决问题就删了,没解决贴出来也没用啊。这个问题我搜GOOGLE也只找到一个歪果人提过这个问题,也是没有人能解决。

你这样式不行啊,跟我的要求不符,下面还有空白。

那你就别设置datagrid的高度。

那也不行,这个控件是放在界面中间的,预留的空间已经给好了,高度是固定的。顺便问下,代码太长,怎么贴出来啊?

那这就跟样式没关系了。用#10楼的方法。
解决方案:
引用10楼China_LY11的回复:

可以取个巧,你把数据源绑定在一个DataTable里面,然后判断DataTable的行数量够不够填满,不够就给DataTable增加空的行。whlie(dt.rows.count<10){DataRowdr=dt.newrow();dt.add(dr);}

你这DataTable怎么跟我的不一样啊,能给个代码示例么?
解决方案:
引用17楼mjy448634095的回复:

Quote: 引用10楼China_LY11的回复:
可以取个巧,你把数据源绑定在一个DataTable里面,然后判断DataTable的行数量够不够填满,不够就给DataTable增加空的行。whlie(dt.rows.count<10){DataRowdr=dt.newrow();dt.add(dr);}

你这DataTable怎么跟我的不一样啊,能给个代码示例么?

不好意思,我看错了。我当成winform的去了。我的意思是给DataGird的数据源添加空行。wfp里面应该也是可以的。
解决方案:
引用18楼China_LY11的回复:

Quote: 引用17楼mjy448634095的回复:
Quote: 引用10楼China_LY11的回复:
可以取个巧,你把数据源绑定在一个DataTable里面,然后判断DataTable的行数量够不够填满,不够就给DataTable增加空的行。whlie(dt.rows.count<10){DataRowdr=dt.newrow();dt.add(dr);}

你这DataTable怎么跟我的不一样啊,能给个代码示例么?

不好意思,我看错了。我当成winform的去了。我的意思是给DataGird的数据源添加空行。wfp里面应该也是可以的。

添加空行这个我已经试过了,这样的话,下面的空行是有正常行的效果的,比如MOSEOVER效果、选中效果等,这个不符合要求。
解决方案:
还有谁?!!!!!!!!!
解决方案:
引用20楼mjy448634095的回复:

还有谁?!!!!!!!!!

直接告诉你,这种功能目前实现不了。
解决方案:
引用21楼duanzi_peng的回复:

Quote: 引用20楼mjy448634095的回复:
还有谁?!!!!!!!!!

直接告诉你,这种功能目前实现不了。

好吧。只好自己写一个控件了。
解决方案:
放一张背景图搞掂。不知是否明白我的意思。
解决方案:
本来空白的地方,看到了间隔行的背景图,以假乱真。
解决方案:
引用24楼leo2003的回复:

本来空白的地方,看到了间隔行的背景图,以假乱真。

额,列分隔线怎么处理,列是可拉动的。
解决方案:
引用25楼mjy448634095的回复:

Quote: 引用24楼leo2003的回复:
本来空白的地方,看到了间隔行的背景图,以假乱真。

额,列分隔线怎么处理,列是可拉动的。

非真实的行,可以只要横纹呀,用户也好识别。
解决方案:
引用26楼leo2003的回复:

Quote: 引用25楼mjy448634095的回复:
Quote: 引用24楼leo2003的回复:
本来空白的地方,看到了间隔行的背景图,以假乱真。

额,列分隔线怎么处理,列是可拉动的。

非真实的行,可以只要横纹呀,用户也好识别。

大神,说再多没用,求给个代码示例。
解决方案:
引用26楼leo2003的回复:

Quote: 引用25楼mjy448634095的回复:
Quote: 引用24楼leo2003的回复:
本来空白的地方,看到了间隔行的背景图,以假乱真。

额,列分隔线怎么处理,列是可拉动的。

非真实的行,可以只要横纹呀,用户也好识别。

不能只是横纹,必须得要列分隔线。
解决方案:
引用25楼mjy448634095的回复:

Quote: 引用24楼leo2003的回复:
本来空白的地方,看到了间隔行的背景图,以假乱真。

额,列分隔线怎么处理,列是可拉动的。

没有列分隔线的情况我早就实现了。就那个列分隔线不好处理。
解决方案:
引用29楼mjy448634095的回复:

Quote: 引用25楼mjy448634095的回复:
Quote: 引用24楼leo2003的回复:
本来空白的地方,看到了间隔行的背景图,以假乱真。

额,列分隔线怎么处理,列是可拉动的。

没有列分隔线的情况我早就实现了。就那个列分隔线不好处理。

没招,我也不会。
解决方案:
按背景下面的自己重绘一下是的。wpf这东西还没淘汰呢
解决方案:
我们的实现是把条形背景作为整个DataGrid背景,然后把Row的背景透明,接着让DataGrid按行滚动。妥妥的。
解决方案:
引用32楼muzizongheng的回复:

我们的实现是把条形背景作为整个DataGrid背景,然后把Row的背景透明,接着让DataGrid按行滚动。妥妥的。

可是列是可以拖动的,那个列分隔线如何实现?
解决方案:
引用33楼mjy448634095的回复:

Quote: 引用32楼muzizongheng的回复:
我们的实现是把条形背景作为整个DataGrid背景,然后把Row的背景透明,接着让DataGrid按行滚动。妥妥的。

可是列是可以拖动的,那个列分隔线如何实现?

简单,自定义DataGrid的Celltemplate,背景透明但border的右边有值,比如为2.
解决方案:
引用34楼muzizongheng的回复:

Quote: 引用33楼mjy448634095的回复:
Quote: 引用32楼muzizongheng的回复:
我们的实现是把条形背景作为整个DataGrid背景,然后把Row的背景透明,接着让DataGrid按行滚动。妥妥的。

可是列是可以拖动的,那个列分隔线如何实现?

简单,自定义DataGrid的Celltemplate,背景透明但border的右边有值,比如为2.

简单,谁都会说,求大神给示例。要做的效果和图2一样的。
解决方案:
这个怎么搞,看看大神们谁知道!
解决方案:
给数据源插入空行
解决方案:
引用37楼wf5360308的回复:

给数据源插入空行

麻烦你看完所有楼上再谈你的看法。

时间: 2024-09-14 19:59:38

wpf DataGrid下面剩余空间背景问题的相关文章

百度音乐歌曲怎么设为qq空间背景?

  有时候在qq空间设置网页音乐为背景音乐时候我们需要得到网页音乐的url链接,百度音乐歌曲怎么设为qq空间背景?百度音乐的链接在哪里呢?下面小编就来教大家找出百度音乐url链接地址. 第一步.通过百度音乐试听歌曲会是百度音乐盒这个界面. 第二步.将鼠标移植歌曲列表上,在右侧就会显示有下载歌曲,我们点击下载按钮. 第三步.这时就会弹出下载歌曲提示框,选择品质,点击下载. 第四步.点击下载之后,浏览器就会弹出下图所示的新建下载任务提示,将图中红框中的下载地址全部复制,这个就是百度音乐歌曲真实链接地

U盘文件不多却提示没有剩余空间如何解决

  1.可能是u盘中病毒了 这种情况下,中病毒的可能性是非常高,所以首先Ghost win7系统用户要检查自己U盘设备安全问题,看看有没有病毒文件隐藏在其中,如果有的话,及时删除这些病毒文件,如果不能根除的话,那么就需要对U盘设备进行格式化来进行解决这个问题. 2.u盘格式问题 如果U盘设备是FAT32格式,因为最多可以储存2GB文件,所以当文件超过这个数值以后,就会提示剩余空间不足,Win7系统用户只需要把U盘设备格式更改为NTFS格式就解决可以解决问题. 3.里面有隐藏文件 在U盘设备中,是

SQL Server自动化运维系列——监控磁盘剩余空间及SQL Server错误日志(Power Shell)

原文:SQL Server自动化运维系列--监控磁盘剩余空间及SQL Server错误日志(Power Shell) 需求描述 在我们的生产环境中,大部分情况下需要有自己的运维体制,包括自己健康状态的检测等.如果发生异常,需要提前预警的,通知形式一般为发邮件告知. 在所有的自检流程中最基础的一个就是磁盘剩余空间检测.作为一个高效的DBA不可能每天都要上生产机上查看磁盘剩余或者直到磁盘无剩余空间报错后才采取扩容措施. 当然,作为微软的服务器有着自己的监控软件:SCCM(System Center

远程监控磁盘剩余空间的软件 同时监控多台服务器 windows的

问题描述 远程监控磁盘剩余空间的软件 同时监控多台服务器 windows的 有没有 远程监控磁盘剩余空间的软件 同时监控多台服务器 windows的 解决方案 你是不是想要这样的? 解决方案二: 自己写一个软件,定时读取剩余空间,然后发送到指定服务器上 然后再写个手机软件,从服务器上读取

wpf datagrid控件拖动列头,改变顺序,获取改变后的排列顺序

问题描述 wpf datagrid控件拖动列头,改变顺序,获取改变后的排列顺序 wpf datagrid控件拖动列头,改变顺序,获取改变后的排列顺序 解决方案 看看有没有列顺序改变触发的事件,如果有在这个事件里面获取

wpf datagrid 设置行颜色

问题描述 wpf datagrid 设置行颜色 ** 我是这样设置颜色,主要是验证一数据根据条件给行设置颜色.但是一滚动颜色设置就不对了,行颜色来回跑** DataGridRow row = (DataGridRow)dataGrid.ItemContainerGenerator.ContainerFromIndex(rowIndex); if (rowContainer == null) { dataGrid.UpdateLayout(); dataGrid.ScrollIntoView(da

wpf datagrid 光标如何落到单元格里

问题描述 wpf datagrid 光标如何落到单元格里 我的这个datagrid没有写任何代码,是后台绑定的数据,表头也是. 我想后台控制编辑位置,这个效果 解决方案 http://bbs.csdn.net/topics/390426889

wpf datagrid如何获取DataGridCheckBoxColumn选中的值,后台如何判?

问题描述 wpf datagrid如何获取DataGridCheckBoxColumn选中的值,后台如何判? ,这个后台如何判断是否选中,并且获取选中的那一列.

wpf datagrid进入编辑模式

问题描述 wpf datagrid进入编辑模式 请教,wpf的datagrid怎么禁止双击某自定义列进入(退出)编辑模式,而是点击列中的button进入编辑模式, 解决方案 默认将每列设置成只读的 当点击button,再将此行设置成可编辑即可 解决方案二: 设置成可编辑后,在单元格的空白处点击会退出编辑模式的.单元格里有三个button