wpf 关于datagrid的行选模式 本帖最后由 open382000 于 2013-12-29 14:52:43 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 (1)你可以取消行选中的样式,删除下面这段样式即可<Trigger Property="IsSelected" Value="True"> <Setter Property="Foreground" Value="Black"/> <Setter Property="Background" Value="DodgerBlue"/> </Trigger>同时添加一个EditingElementStyle设置处于编辑状态的样式(2)这个你可以通过DataGrid的CurrentCell可以获取到当前的单元格以及所在的列,再通过SelectedIndex等获取到当前的行,或者通过CurrentCellChanged事件,都可以获取到相关信息,然后设置你的下一个位置为CurrentCell,调用BeginEdit即可(还有CancelEdit和CommitEdit分别是取消和提交) <!--行样式触发--> <!--背景色改变必须先设置cellStyle 因为cellStyle会覆盖rowStyle样式--> <Style TargetType="DataGridRow"> <Setter Property="Background" Value="White" /> <Setter Property="Height" Value="25"/> <Setter Property="Foreground" Value="Black" /> <Style.Triggers> <!--隔行换色--> <Trigger Property="AlternationIndex" Value="0" > <Setter Property="Background" Value="#ecf6fc" /> </Trigger> <!--<Trigger Property="AlternationIndex" Value="1" > <Setter Property="Background" Value="#ecf6fc" /> </Trigger>--> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="Background" Value="LightGray"/> <Setter Property="Foreground" Value="White"/> </Trigger> <Trigger Property="IsSelected" Value="True"> <Setter Property="Foreground" Value="Black"/> <Setter Property="Background" Value="DodgerBlue"/> </Trigger> </Style.Triggers> </Style>你的选中背景来自这里的IsSelected中的DogerBule,如果你都去掉了,它难道还会有这么个颜色? 没办法吧,无论鼠标移动,还是你要求的键盘操作,都是会选中行了,控件本身并没有这样的区分,如果一定要区分的话,你试试写个新的控件,继承子DataGrid,定义一个EventSource的依赖属性,然后设计样式:<Trigger Property="EventSource" Value="Mouse"> <Setter Property="Foreground" Value="Black"/> <Setter Property="Background" Value="DodgerBlue"/></Trigger>修改成这样的同时为你的控件注册Key和Mouse的事件,动态调整EventSource为Mouse或者Key这个思路就是这样,你可以试试。最复杂的情况就是你完全自写一个新的类似DataGrid的控件(这个是最笨最不理想的方法了) 没办法吧,无论鼠标移动,还是你要求的键盘操作,都是会选中行了,控件本身并没有这样的区分,如果一定要区分的话,你试试写个新的控件,继承子DataGrid,定义一个EventSource的依赖属性,然后设计样式:<Trigger Property="EventSource" Value="Mouse"> <Setter Property="Foreground" Value="Black"/> <Setter Property="Background" Value="DodgerBlue"/></Trigger>修改成这样的同时为你的控件注册Key和Mouse的事件,动态调整EventSource为Mouse或者Key这个思路就是这样,你可以试试。最复杂的情况就是你完全自写一个新的类似DataGrid的控件(这个是最笨最不理想的方法了)那问下这位老师,,我看了那个access里面的那些表。。也是这样行选变色,但是点单元格的时候 就显示单元格的边框变色。。这样是如何做到的呀 没办法吧,无论鼠标移动,还是你要求的键盘操作,都是会选中行了,控件本身并没有这样的区分,如果一定要区分的话,你试试写个新的控件,继承子DataGrid,定义一个EventSource的依赖属性,然后设计样式:<Trigger Property="EventSource" Value="Mouse"> <Setter Property="Foreground" Value="Black"/> <Setter Property="Background" Value="DodgerBlue"/></Trigger>修改成这样的同时为你的控件注册Key和Mouse的事件,动态调整EventSource为Mouse或者Key这个思路就是这样,你可以试试。最复杂的情况就是你完全自写一个新的类似DataGrid的控件(这个是最笨最不理想的方法了)那问下这位老师,,我看了那个access里面的那些表。。也是这样行选变色,但是点单元格的时候 就显示单元格的边框变色。。这样是如何做到的呀使用DataGrid的SelectionUnit设置下:grid.SelectionUnit = DataGridSelectionUnit.CellOrRowHeader; DATASET中查找的问题~~ 在用C#划出的EXCEL表格中,如何存储哈希表 SQL查询 急 输出当前页面到word 如何 array 里面 找 array SQl简单问题 程序里如何得到excel当前sheet页面的高度和宽度??? c#打印发票问题,大家来帮吗啊,今天要解决的 如何提升c# 版web application的速度? winform C# 写入本地cookies 值,然后在另一个网站项目中访问这个cookies 菜鸟求助关于C#作图的问题 EF Model Frist误操作,数据库数据瞬间全部丢失,想死的心都有了!
<Setter Property="Foreground" Value="Black"/>
<Setter Property="Background" Value="DodgerBlue"/>
</Trigger>同时添加一个EditingElementStyle设置处于编辑状态的样式
(2)
这个你可以通过DataGrid的CurrentCell可以获取到当前的单元格以及所在的列,再通过SelectedIndex等获取到当前的行,或者通过CurrentCellChanged事件,都可以获取到相关信息,然后设置你的下一个位置为CurrentCell,调用BeginEdit即可(还有CancelEdit和CommitEdit分别是取消和提交)
<!--行样式触发-->
<!--背景色改变必须先设置cellStyle 因为cellStyle会覆盖rowStyle样式-->
<Style TargetType="DataGridRow">
<Setter Property="Background" Value="White" />
<Setter Property="Height" Value="25"/>
<Setter Property="Foreground" Value="Black" />
<Style.Triggers>
<!--隔行换色-->
<Trigger Property="AlternationIndex" Value="0" >
<Setter Property="Background" Value="#ecf6fc" />
</Trigger>
<!--<Trigger Property="AlternationIndex" Value="1" >
<Setter Property="Background" Value="#ecf6fc" />
</Trigger>-->
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="LightGray"/>
<Setter Property="Foreground" Value="White"/>
</Trigger>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Foreground" Value="Black"/>
<Setter Property="Background" Value="DodgerBlue"/>
</Trigger>
</Style.Triggers>
</Style>你的选中背景来自这里的IsSelected中的DogerBule,如果你都去掉了,它难道还会有这么个颜色?
<Trigger Property="EventSource" Value="Mouse">
<Setter Property="Foreground" Value="Black"/>
<Setter Property="Background" Value="DodgerBlue"/>
</Trigger>
修改成这样的
同时为你的控件注册Key和Mouse的事件,动态调整EventSource为Mouse或者Key
这个思路就是这样,你可以试试。
最复杂的情况就是你完全自写一个新的类似DataGrid的控件(这个是最笨最不理想的方法了)
<Trigger Property="EventSource" Value="Mouse">
<Setter Property="Foreground" Value="Black"/>
<Setter Property="Background" Value="DodgerBlue"/>
</Trigger>
修改成这样的
同时为你的控件注册Key和Mouse的事件,动态调整EventSource为Mouse或者Key
这个思路就是这样,你可以试试。
最复杂的情况就是你完全自写一个新的类似DataGrid的控件(这个是最笨最不理想的方法了)
那问下这位老师,,我看了那个access里面的那些表。。也是这样行选变色,但是点单元格的时候 就显示单元格的边框变色。。这样是如何做到的呀
<Trigger Property="EventSource" Value="Mouse">
<Setter Property="Foreground" Value="Black"/>
<Setter Property="Background" Value="DodgerBlue"/>
</Trigger>
修改成这样的
同时为你的控件注册Key和Mouse的事件,动态调整EventSource为Mouse或者Key
这个思路就是这样,你可以试试。
最复杂的情况就是你完全自写一个新的类似DataGrid的控件(这个是最笨最不理想的方法了)
那问下这位老师,,我看了那个access里面的那些表。。也是这样行选变色,但是点单元格的时候 就显示单元格的边框变色。。这样是如何做到的呀
使用DataGrid的SelectionUnit设置下:
grid.SelectionUnit = DataGridSelectionUnit.CellOrRowHeader;