在WPF中,您可以使用ExceptionValidationRule或在数据绑定期间根据数据层中抛出的错误设置验证DataErrorValidationRule.
假设你有一堆这样设置的控件,你有一个Save按钮.当用户单击"保存"按钮时,您需要确保在继续保存之前没有验证错误.如果存在验证错误,您希望对它们大声疾呼.
在WPF中,如何确定是否有任何数据绑定控件设置了验证错误?
我在Windows上使用gvim.
在我的_vimrc中我添加了:
set shell=powershell.exe
set shellcmdflag=-c
set shellpipe=>
set shellredir=>
function! Test()
echo system("dir -name")
endfunction
command! -nargs=0 Test :call Test()
Run Code Online (Sandbox Code Playgroud)
如果我执行此函数(:Test),我会看到无意义的字符(非数字/字母ASCII字符).
如果我使用cmd作为shell,它可以工作(没有-name),所以问题似乎是从powershell输出到vim.
有趣的是,这很有用:
:!dir -name
Run Code Online (Sandbox Code Playgroud)
就像这样:
:r !dir -name
Run Code Online (Sandbox Code Playgroud)
更新: 确认大卫提到的行为
如果在_vimrc中执行上面提到的set命令,:Test输出无意义.但是,如果直接在vim而不是_vimrc中执行它们,则:Test按预期工作.
此外,我尝试使用iconv,以防它是一个编码问题:
:echo iconv( system("dir -name"), "unicode", &enc )
Run Code Online (Sandbox Code Playgroud)
但这没有任何区别.我可能会使用错误的编码类型.
有谁知道如何使这项工作?
我想将Vim的quickfix功能与Visual Studio的devenv构建过程或msbuild的输出一起使用.
我创建了一个名为build.bat的批处理文件,它执行devenv构建,如下所示:
devenv MySln.sln /Build Debug
Run Code Online (Sandbox Code Playgroud)
在vim我已经指出:make命令到该批处理文件:
:set makeprg=build.bat
Run Code Online (Sandbox Code Playgroud)
当我现在运行:make时,构建执行成功,但是错误不会被解析出来.所以如果我运行:cl或:cn我最终会看到devenv/Build的所有输出.我应该只看到错误.
我已经尝试了许多不同的错误格式设置,我在网络上的各个站点上找到了这些设置,但是没有一个设置正确地解析了错误.这里有一些我尝试过的:
set errorformat=%*\\d>%f(%l)\ :\ %t%[A-z]%#\ %m
set errorformat=\ %#%f(%l)\ :\ %#%t%[A-z]%#\ %m
set errorformat=%f(%l,%c):\ error\ %n:\ %f
Run Code Online (Sandbox Code Playgroud)
当然,我已经尝试过Vim的默认设置.
以下是build.bat的一些示例输出:
C:\TFS\KwB Projects\Thingy>devenv Thingy.sln /Build Debug
Microsoft (R) Visual Studio Version 9.0.30729.1.
Copyright (C) Microsoft Corp. All rights reserved.
------ Build started: Project: Thingy, Configuration: Debug Any CPU ------
c:\WINDOWS\Microsoft.NET\Framework\v3.5\Csc.exe /noconfig /nowarn:1701,1702 /errorreport:prompt /warn:4 /define:DEBUG;TRACE /reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\PresentationCore.dll" /reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\PresentationFramework.dll" /reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\System.Core.dll" /reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\System.Data.DataSetExtensions.dll" /reference:c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Data.dll /reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\System.Data.Linq.dll" …Run Code Online (Sandbox Code Playgroud) 在TFS中,当您将分支A合并到分支B并签入时,您将在B上获得单个变更集(通常使用"合并的A-> B"等注释).
这意味着B没有来自A的任何签到历史记录.因此,如果有人在分支A上创建了一个新文件,则无法告诉谁从分支B创建了它.如果有人在A上更新了文件,则可以'告诉谁从分支B做了更新.
有没有办法在分支机构中看到这种详细的变更集历史?某种电动玩具,或第三方工具,还是其他什么?
更新:TFS Power Toy tfpt历史/ followbranches工具不"扩展合并",它只"扩展分支",因此无法解决此问题.
在SQL Server 2005中,查询分析器多次告诉我在已经具有聚簇索引的表的主ID列上创建非聚簇索引.遵循此建议后,查询执行计划将报告查询应该更快.
为什么同一列上的非聚集索引(具有相同的排序顺序)比聚簇索引更快?
任何人都可以解释这种行为或如何绕过它?
如果您执行此查询:
select *
from TblA
left join freetexttable ( TblB, *, 'query' ) on TblA.ID = [Key]
inner join DifferentDbCatalog.dbo.TblC on TblA.ID = TblC.TblAID
Run Code Online (Sandbox Code Playgroud)
这将非常非常缓慢.
如果您将该查询更改为使用两个内部联接而不是左联接,则会非常快.如果将其更改为使用两个左连接而不是内连接,则会非常快.
如果使用sql表变量而不是freetexttable,则可以观察到相同的行为.
每当有一个表变量(或自由文本表)和一个不同数据库目录中的表时,就会出现性能问题,其中一个表位于内连接中,另一个表位于左连接中.
有谁知道为什么这么慢,或者如何加快速度?
mercurial ×2
sql-server ×2
tfs ×2
vim ×2
branch ×1
data-binding ×1
errorformat ×1
freetext ×1
iis ×1
indexing ×1
merge ×1
performance ×1
powershell ×1
svn ×1
validation ×1
windows ×1
wpf ×1