草庐IT

c# - MVVM - 验证真的需要这么麻烦吗?

在我的应用程序中,我有大量的表单,其中大部分都有自己的绑定(bind)模型!当然数据验证很重要,但是没有比为所有模型实现IDataErrorInfo然后为所有属性编写代码来验证它们更好的解决方案了吗?我已经创建了验证助手,它删除了很多实际的验证代码,但我仍然忍不住觉得我错过了一两个技巧!我可以补充一点,这是我在其中使用MVVM的第一个应用程序,所以我确信我在这个主题上还有很多东西要学习!编辑:这是我非常不喜欢的典型模型的代码(让我解释一下):stringIDataErrorInfo.Error{get{returnnull;}}stringIDataErrorInfo.this[str

c# - 检测,ScrollViewer的ScrollBar是否可见

我有一个TreeView。现在,我想检测垂直滚动条是否可见。当我用尝试时varvisibility=this.ProjectTree.GetValue(ScrollViewer.VerticalScrollBarVisibilityProperty)(其中this.ProjectTree是TreeView)为了能见度,我总是使用Auto。我该如何检测ScrollBar是否有效可见?谢谢。 最佳答案 您可以使用ComputedVerticalScrollBarVisibility属性。但为此,您首先需要在TreeView的模板中找到S

c# - 从 CefSharp 网络浏览器获取 HTML 源代码

我正在使用aCefSharp.Wpf.ChromiumWebBrowser(版本47.0.3.0)加载网页。页面加载后的某个时刻,我想获取源代码。我打过:wb.GetBrowser().MainFrame.GetSourceAsync()但是它似乎并没有返回所有源代码(我相信这是因为有子框架)。如果我调用:wb.GetBrowser().MainFrame.ViewSource()我可以看到它列出了所有源代码(包括内部框架)。我想获得与ViewSource()相同的结果。请有人指出我正确的方向吗?更新–添加了代码示例注意:网络浏览器指向的地址也只能在10/03/2016之前有效。之后它

c# - WPF 中 ContextMenu 中的 CommandParameters

我有一个场景,我有一个WPFTreeView控件,它的项目有一个HierarchicalDataTemplate。现在在HierarchicalDataTemplate中,我有一个Label并且Label有一个ContextMenu和一个的菜单项删除。Delete菜单项绑定(bind)到名为DeleteCommand的命令,该命令是已设置为HierarchicalDataTemplate的DataType的类的一部分。现在,我想在ContextMenu的Delete菜单项的DeleteCommand的CommandParameters中传递TreeView控件,这样我可以在删除当前选定

c# - 在 WPF M-V-VM 中撤消,它如何适应?

在我以前的项目中,我已经用c++实现了撤销系统,我知道它是如何工作的。我也知道命令模式。我将实现一个C#/WPF桌面应用程序,并希望我的设计基于M-V-VM模式。应用程序将:是一个相对较小的项目(1名开发人员预计工作2-3周)拥有一个具有持久性的简单数据模型(linqtoXML)支持撤销/重做我想知道是否有人在遵循M-V-VM模式时有过实现撤消系统的经验。它如何适合它?它如何从INotifyPropertyChanged和INotifyCollectionChanged通知中获益,以便在实现模型(业务对象)时需要最少的工作。我认为撤消系统会以某种方式集成到ViewModel层中,因为它

c# - 将命令绑定(bind)到事件?

将命令绑定(bind)到事件的好方法是什么?在我的WPF应用程序中,有些事件我想通过我的ViewModel捕获和处理,但我不确定如何进行。失去焦点、鼠标悬停、mousemove等事情。由于我试图坚持MVVM模式,我想知道是否有纯XAML解决方案。谢谢! 最佳答案 使用System.Windows.Interactivity…xmlns:i=http://schemas.microsoft.com/expression/2010/interactivity…确保您的项目引用程序集System.Windows.Interactivity

c# - WPF 数据绑定(bind) : enable/disable a control based on content of var?

我的表单上有一个按钮,只有在TreeView(或tabitem中的ListView)中选择了一个项目时才应启用该按钮。选择一个项目时,它的值存储在一个字符串成员变量中。我可以将按钮的IsEnabled属性绑定(bind)到成员var的内容吗?也就是说,如果成员var不为空,则启用该按钮。同样,当成员变量的内容发生变化(设置或清除)时,按钮的状态也应发生变化。 最佳答案 由于您可能希望根据字符串绑定(bind)按钮的IsEnabled属性,请尝试为它创建一个转换器。即...和转换器:[ValueConversion(typeof(st

c# - 如何将 Wpf 窗口设置为 Winforms 窗体的所有者

如何将System.Windows.Window设置为System.Windows.Forms.Form的所有者?在我搜索了一段时间之后才意识到我已经在我的一个实用程序类中找到了答案,我决定将答案放在stackoverflow上。希望有人觉得这很有用。 最佳答案 使用这个方法:[DllImport("user32.dll")]privatestaticexternintSetWindowLong(HandleRefhWnd,intnIndex,intdwNewLong);//////setstheownerofaSystem.Win

c# - WPF:使路径的整个 "block"可点击

我的一些Button有一个特殊的ControlTemplate。这很好用,但由于我使用的是Path(在本例中,它的形状就像一个胖X),确切的路径是可点击的,而不是X角之间的小空间。是否有任何自动魔法可以使X的整个“block”可点击?我考虑过将路径包裹在一个矩形对象中,但我只是想确保我没有遗漏一些微不足道的东西。 最佳答案 AviadP.是正确的。这就是我所做的:这是有效的,因为当“HitTest”以确定鼠标点击的路径时,“透明”画笔被认为是一种常规颜色。 关于c#-WPF:使路径的整个

c# - 如何添加 Canvas 边框

我想使用C#而不是XAML添加Canvas边框我怎样才能实现它? 最佳答案 我认为最好将Canvas放在边框内,然后在代码隐藏中指定边框粗细。然后,您可以在您的代码中以编程方式打开和关闭边框。XAML:代码隐藏://TurnonborderCanvasBorder.BorderThickness=newThickness(1);//TurnoffborderCanvasBorder.BorderThickness=newThickness(0); 关于c#-如何添加Canvas边框,我们