本文介绍在 MVVM 中,如何用 ViewModel 控制焦点. 这焦点设置个东西嘛,有些争论.就是到底要不要用 ViewModel 来控制视图的键盘输入焦点.这里不讨论,假设你就是要通过 VM,设置输入焦点在哪里. MSDN 有解释关于 Focus 的,还有 FocusManager,点击这里打开.不知道的话建议你先看看,只求结果的可以直接看下面代码,抄就是了.这次,初级的解释全部略过,直接说做法,看不懂的请留言.做法很多,大概两种比较符合 MVVM 模式: 1. DataTrigger 设置…
 转自http://blog.csdn.net/qing2005/article/details/6601199http://blog.csdn.net/qing2005/article/details/6601475 MVVM中轻松实现Command绑定(二)传递Command参数 属性栏里去设置的.语句应该是CommandParameter="{Binding ElementName=控件名}" 我们如果需要在Command中传递参数,实现也很简单.DelegateCommand还…
原文:WPF编程,通过Double Animation同时动态缩放和旋转控件的一种方法. 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net/qq_43307934/article/details/87260287  1. 可直接调用.需要将控件的名称,缩放的位数,时间等参数传进去.  /// <summary> /// 同时旋转和缩放的动画 /// </summary> /// <param name="element&quo…
原文:C# WPF 低仿网易云音乐(PC)Banner动画控件 由于技术有限没能做到一模一样的动画,只是粗略地做了一下.动画有点生硬,还有就是没做出网易云音乐的立体感.代码非常简单粗暴,而且我也写有很多注释,这里就不多啰嗦了,直接贴代码. 算了,啰嗦几句.原理是这样的,在自定义用户控件内添加3个border(左.中.右,以下分别简称为:b1.b2.b3),对border进行缩放和移动动画.往右切换时b1放大平移到b2的位置,b2缩小平移到b3的位置,b3平移到b1的位置,动画结束后重新记录3个b…
原文:WPF 程序如何跨窗口/跨进程设置控件焦点 WPF 程序提供了 Focus 方法和 TraversalRequest 来在 WPF 焦点范围内转移焦点.但如果 WPF 窗口中嵌入了其他框架的 UI(比如另一个子窗口),那么就需要使用其他的方法来设置焦点了. 一个粗略的设置方法是,使用 Win32 API: SetFocus(hwnd); 1 传入的是要设置焦点的窗口的句柄. 参考资料 winapi - Win32: C++: How do I re-focus on Parent Wind…
IValueConverter,做 WPF 的都应该接触过,把值换成 Visibility .Margin 等等是最常见的例子,也有很多很好的博文解释过用法.本文只是解释一下,MVVM 中一些情景. 我遇到过一个用例,做些简单的数据可视化.要求把 enum 换成图片. MVVM 模式下,是通过 ViewModel 把业务类 Model 暴露给 View,用绑定完成 ViewModel 和 View 的连接.这样的话,Model 内的 enum 直接绑到 View 时候,视图显示了 enum 值…
昨天在mvvm wpf的开发中遇到一个问题,绑定不起作用,编辑阶段没问题也没有提示找不到对应的绑定,但是在运行之后却不起作用,查了很多资料,说法不一,有些是要删除datagrid的一行,直接绑定delete即可,但是我要绑定的是viewmodel的command,最终解决问题了,特分享如下(已解决): view: <DataGrid ItemsSource="{Binding TodoList}" AutoGenerateColumns="False" Can…
在wpf的DataGrid控件中,某一列的数据模板为TextBox控件的话,绑定Text="{Binding TxtSn, UpdateSourceTrigger=PropertyChanged}" UpdateSourceTrigger=PropertyChanged为必须设置项. 代码如下: <DataGridTemplateColumn x:Name="csdx2" Header="测试对象" Width="*"…
AvalonEdit 是一个基于 WPF 的文本编辑器组件.它是由 Daniel Grunwald 为 SharpDevelop 编写的.从 5.0 版开始,AvalonEdit 根据MIT许可证发布. 通过使用 AvalonEdit ,小伙伴们可以很容易的在自己的程序中集成代码编辑器.AvalonEdit 在路遥工具箱中有着广泛的运用. 安装 AvalonEdit 首先,通过 NuGet 安装 AvalonEdit ,地址是:https://www.nuget.org/packages/Ava…
以前的做法: 1.当项目的时间比较紧迫的时候,对UI层中控件的事件的处理,往往采取的是类似Winform中最简单的做法,直接做一个事件的Handler直接去调用VM层的方法. 2.控件只有一个Command属性,其它的事件的处理方法没有办法和ViewModel层进行解耦的时候往往也采取上面提到的方法. 如下图所示: 新的做法: 为了实现事件的处理与View层的解耦,我们可以利用WPF提供的附加属性来为需要的事件添加附加行为.附加属性扮演了一个在View层与Model层牵线的角色. 需要下面三个步…