有multitrigger,其中一个条件不为null,所以如果StowedAssetDetailedThumbnailViewModel!= null则设置模板
<Style.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsSelected" Value="true" />
<Condition Binding="{Binding Path=StowedAssetDetailedThumbnailViewModel,
Converter={StaticResource isNull}}"
Value="False"/>
</MultiTrigger.Conditions>
<Setter Property="Template" Value="{StaticResource SelectedTemplate}" />
</MultiTrigger>
</Style.Triggers>
Run Code Online (Sandbox Code Playgroud)
使用简单转换器:
return isNull == null;
Run Code Online (Sandbox Code Playgroud)
错误是 必须具有Property的非null值
更新:谢谢,最终解决方案是
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding IsSelected, RelativeSource={RelativeSource Self}}"
Value="true" />
<Condition Binding="{Binding Path=StowedAssetDetailedThumbnailViewModel,
Converter={StaticResource isNull}}"
Value="false"/>
</MultiDataTrigger.Conditions>
<Setter Property="Template" Value="{StaticResource SelectedTemplate}" />
</MultiDataTrigger>
</Style.Triggers>
Run Code Online (Sandbox Code Playgroud) 我找到了一个用C#访问网络摄像头的例子.该示例使用DirectShow.NET库.我试图理解代码,但到目前为止我唯一可以理解的是,usercontrol不知何故调用directshow直接绘制到用户控件的表面.
我想访问每个帧并将其放入Bitmap对象.如何判断新帧何时到达?如何将这个新帧捕获到位图对象中?
如果您了解DirectShow.NET的方法,这可能很容易回答.
我试图让它成为当用户将鼠标悬停在我的DataGrid/dataview中的一行时,每一行都会显示不同的工具提示结果.
我无法弄清楚这一点.使用DataGrid我怎么能说每行上的mouseOver并给出行特定的数据?似乎所有我平常的在线资源都没有发现!
如果有一种方法可以使用datagridview,我不知道如何填充它(datagridview),因为每次程序运行时我的表的长度都不一样.(程序跟踪信号,所以如果收到更多信号,那么表格会有更多行...)
*注意:这是视觉工作室2005环境中的视觉C#2.0.
*结束了以下:
private void datagridSignal_MouseMove(object sender, MouseEventArgs e)
{
this.toolTip.Hide(datagridSignal);
this.toolTip.RemoveAll();
DataTable dt = GetSignalTable();
DataView dv = new DataView(dt);
Point prop = new Point(e.X, e.Y);
System.Windows.Forms.DataGrid.HitTestInfo myHitTest;
prop = datagridSignal.PointToClient(prop);
myHitTest = datagridSignal.HitTest(prop.X, prop.Y);
this.toolTip.SetToolTip(datagridSignal, " ID = '" + (int)dv[myHitTest.Row][0] + "' ");
}
Run Code Online (Sandbox Code Playgroud) 我想找到一种方法将一个文件同时复制到多个位置(使用C#).
意味着我不希望原始文件只被读取一次,并将文件"粘贴"到另一个位置(在本地网络上).
就我的测试给我看的那样
File.Copy()
Run Code Online (Sandbox Code Playgroud)
将永远再次阅读来源.
据我所知,即使在使用内存时,该内存片也会被锁定.
所以基本上,我想模仿"复制 - 粘贴"形式的一个"复制"和多个"粘贴",而无需再次从硬盘驱动器重新读取.
为什么?因为最终,我需要将一个文件夹(超过1GB)复制到许多计算机,瓶颈是我需要读取源文件的部分.
那么,甚至可以实现吗?
我在 .Net 4.5 中升级了我的旧应用程序。有一些过时的方法警告我非常想解决它们。过时的方法之一是 XmlValidatingReader。在互联网上查了一下,发现XmlReaderSettings是 XmlValidatingReader 的潜在替代品。
// ==old code==
Hashtable _SchemasCache = new Hashtable();
XmlReader xmlReader = new XmlTextReader(xmlStream);
XmlValidatingReader validatingReader = new XmlValidatingReader(xmlReader);
validatingReader.Schemas.Add(root.Namespace, schemaLocation); // both parametres are string. No error
_SchemasCache.Add(schemaLocation, validatingReader.Schemas);
// ==new code==
var schemaLocation = "res://somepath/Messages.xsd";
XmlReaderSettings settings = new XmlReaderSettings();
settings.Schemas.Add(root.Namespace, schemaLocation); // this line gives error
_SchemasCache.Add(schemaLocation, settings.Schemas);
Run Code Online (Sandbox Code Playgroud)
旧代码没有给出任何错误,但新代码给出了一个错误,The URI prefix is not recognized.
我找不到 的这种行为的原因settings.Schemas.Add()
,因为它与XmlValidatingReader
. 有人能帮忙吗?
编辑:这里schemaLocation 的值是“res://somepath/Messages.xsd”。因为 schemaLocation没有Http: …
有没有办法确定鼠标是否使用子画面上的鼠标滚轮处理程序向上或向下滚动?例如
Private Sub PictureBox1_MouseWheel(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseWheel
if mousewheel.scrollup then
UserZoom = UserZoom + 0.05
Me.Refresh()
end if
End Sub
Run Code Online (Sandbox Code Playgroud)
我希望能够根据鼠标是向上还是向下推动来向上或向下调整userzoom的值.任何帮助将不胜感激
我正在使用Eazfuscator 3.3(免费版),我可以模糊我的所有项目,除了一个(在特定的解决方案中).
这是我得到的错误:
错误16处理输入文件'DAL.dll'时出错 - >发生一个或多个错误 - >索引超出范围.必须是非负数且小于集合的大小.
C:\ Projects__ __ __ DAL\EXEC __ _DAL
我试图手动运行:
C:\Program Files (x86)\Eazfuscator.NET\Eazfuscator.NET.exe "C:\Projects\________\______DAL\bin\Release\______DAL.dll" --msbuild-project-path "C:\Projects\______\______DAL\______DAL.csproj" --msbuild-project-configuration "Release" --msbuild-project-platform "AnyCPU" --msbuild-solution-path "C:\Projects\______\______.sln" -n --newline-flush -v 3.3"
Run Code Online (Sandbox Code Playgroud)
但我得到了相同的结果.
我甚至试过这个:
C:\Program Files (x86)\Eazfuscator.NET>Eazfuscator.NET.exe "C:\Projects\_______\_______DAL\bin\Release\________DAL.dll"
Run Code Online (Sandbox Code Playgroud)
但是,正如你所看到的 - 我得到了相同的结果:
Eazfuscator.NET版本3.3(发布版本3.3.161.40493)版权所有(C)2007-2012 Oleksiy Gapotchenko
模糊汇编' _ __ DAL.dll'...错误:处理输入文件时发生错误''____ _DAL.dll' - >发生了一个或多个错误 - >索引超出范围.必须是非负数且小于集合的大小.
我有它,因为我引用的发生的感觉- FluentNHibernate.dll(1.2.0.712),NHibernate.dll(3.1.0.4000),NHibernate.ByteCode.Castle.dll(3.1.0.4000).
我的页面上有一个 WebBrowser 控件。在浏览器控件中显示的页面上触发一些 javascript。当我尝试保存我的网页时出现此错误
String strHtml = _browser.Document.Body.OuterText;
File.WriteAllText("C:\saveme.html", strHtml);
Run Code Online (Sandbox Code Playgroud)
而这一行 _browser.Document.Body.OuterText 抛出异常
Exception:: Specified cast is not valid.
at System.Windows.Forms.UnsafeNativeMethods.IHTMLDocument2.GetLocation()
at System.Windows.Forms.WebBrowser.get_Document()....
Run Code Online (Sandbox Code Playgroud)
我也用过 Invoke 但没有用,有什么我错过的吗
c# ×6
winforms ×2
asp.net ×1
c#-4.0 ×1
copy ×1
datagrid ×1
dataview ×1
directshow ×1
eazfuscator ×1
events ×1
file-copying ×1
file-io ×1
handler ×1
memorystream ×1
mousewheel ×1
obfuscation ×1
obsolete ×1
tooltip ×1
vb.net ×1
webcam ×1
wpf ×1
xaml ×1
xmlreader ×1
xsd ×1