我有一个基于MVVM的窗口,有许多控件,我的模型实现IDataErrorInfo.
还有一个SaveCommand按钮,通过分析Model.Error属性执行验证.
仅当我更改特定控件的值时,或者当我使用PropertyChanged通知有关该属性的更改时,视图才会显示控件周围的默认红色边框.
即使我没有触摸控件,如何强制View显示所有验证错误?
我的所有验证绑定都包括ValidatesOnDataErrors=True, NotifyOnValidationError=True.
我知道一个解决方案是有一个包含所有错误的聚合框,但我更愿意在每个控件的基础上显示错误.
我不想Model.NotifyPropertyChanged从ViewModel 触发每个绑定属性.
我使用的是WPF 4.0,而不是Silverlight,因此INotifyDataErrorInfo无法使用.
我想重现UIScrollView的flick-to-scroll行为,但我不想使用(或不能使用)该类.我能做什么?
当我使用预处理器指令时
1 #if(DEBUG)
2 // 1
3 // 2
4 #else
5 // 1
6 // 2
7 #endif
8
9 logger.Debug("Log exception, etc.");
Run Code Online (Sandbox Code Playgroud)
它导致在运行时日志中的行号(例如堆栈跟踪)不正确 - 在上面的示例中,第9行将变为4,因为其余部分将由预处理器解析.
它使日志分析非常困难.
有没有办法解决这个问题,而无需创建方法ConditionalAttribute?
我知道Debugger.IsAttached(现在我正在使用这个解决方案)但我更愿意根据构建模式(调试/发布)运行代码而不是调试器是否附加.
我有一个MVVM应用程序包含多个视图,其中包含一些IsReadOnly基于用户权限,查看/编辑模式和对象状态的复杂规则.
我想设置IsReadOnly和/或IsEnabled用于控制的整个组的属性在同一容器(GroupBox/ StackPanel/ Grid/ UserControl/等).此属性的值将在ViewModel中定义.
我有3-6不同的SomeGroupIsReadOnly每用户控件的属性(也像大量输入控件TextBox,RadioButtons,ComboBoxes和一些DataGrids),我正在寻找一个通用的,MVVM-友好的解决方案,这将让我重新使用绑定在每个容器而不是分别为每个单独的控件指定它们.
如何使用XAML在Panel或GroupBox等容器内的所有控件上设置IsReadOnly/IsEnabled?
WPF似乎不支持这种开箱即用的...
编辑
我忘了提到为容器设置IsEnabled会禁用TextBoxes的一个重要功能 - 能够复制它们的内容.我需要他们处于IsReadOnly=true状态.如果有一个工作方法,那么我的问题将得到解决.